1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
module RSpec::Rails
RSpec.describe ViewSpecMethods do
before do
class ::VCSampleClass; end
end
after do
Object.send(:remove_const, :VCSampleClass)
end
describe ".add_extra_params_accessors_to" do
describe "when accessors are not yet defined" do
it "adds them as instance methods" do
ViewSpecMethods.add_to(VCSampleClass)
expect(VCSampleClass.instance_methods.map(&:to_sym)).to(include(:extra_params=))
expect(VCSampleClass.instance_methods.map(&:to_sym)).to(include(:extra_params))
end
describe "the added #extra_params reader" do
it "raises an error when a user tries to mutate it" do
ViewSpecMethods.add_to(VCSampleClass)
expect {
VCSampleClass.new.extra_params[:id] = 4
}.to raise_error(/can't modify frozen/)
end
end
end
describe "when accessors are already defined" do
before do
class ::VCSampleClass
def extra_params; end
def extra_params=; end
end
end
it "does not redefine them" do
ViewSpecMethods.add_to(VCSampleClass)
expect(VCSampleClass.new.extra_params).to be_nil
end
end
end
describe ".remove_extra_params_accessors_from" do
describe "when accessors are defined" do
before do
ViewSpecMethods.add_to(VCSampleClass)
end
it "removes them" do
ViewSpecMethods.remove_from(VCSampleClass)
expect(VCSampleClass.instance_methods).to_not include("extra_params=")
expect(VCSampleClass.instance_methods).to_not include(:extra_params=)
expect(VCSampleClass.instance_methods).to_not include("extra_params")
expect(VCSampleClass.instance_methods).to_not include(:extra_params)
end
end
describe "when accessors are not defined" do
it "does nothing" do
expect {
ViewSpecMethods.remove_from(VCSampleClass)
}.to_not change { VCSampleClass.instance_methods }
end
end
end
end
end
|