spec/unit/chozo/varia_model_spec.rb in chozo-0.4.0 vs spec/unit/chozo/varia_model_spec.rb in chozo-0.4.1

- old
+ new

@@ -88,10 +88,36 @@ validations.should be_a(Array) validations.should be_empty end end + + describe "#assignment_mode" do + it "returns the default assignment mode :whitelist" do + subject.assignment_mode.should eql(:whitelist) + end + end + + describe "#set_assignment_mode" do + it "sets the assignment_mode to whitelist" do + subject.set_assignment_mode(:whitelist) + + subject.assignment_mode.should eql(:whitelist) + end + + it "sets the assignment_mode to carefree" do + subject.set_assignment_mode(:carefree) + + subject.assignment_mode.should eql(:carefree) + end + + it "raises if given an invalid assignment mode" do + expect { + subject.set_assignment_mode(:not_a_real_mode) + }.to raise_error(ArgumentError) + end + end end describe "::validate_kind_of" do let(:types) do [ @@ -496,10 +522,30 @@ new_attrs = { undefined_attribute: "value" } subject.mass_assign(new_attrs) + subject.attributes[:undefined_attribute].should be_nil subject.should_not respond_to(:undefined_attribute) + end + + context "when in carefree assignment mode" do + subject do + Class.new do + include Chozo::VariaModel + + set_assignment_mode :carefree + end.new + end + + it "does not ignore values which are not defined" do + new_attrs = { + undefined_attribute: "value" + } + + subject.mass_assign(new_attrs) + subject.attributes[:undefined_attribute].should eql("value") + end end end describe "#from_json" do subject do