spec/references_spec.rb in mongo_doc-0.6.17 vs spec/references_spec.rb in mongo_doc-0.6.18

- old
+ new

@@ -31,10 +31,27 @@ it "is part of the persistent key set" do Person._keys.should include(:address_id) end end + + context "setting the id" do + class Person + include MongoDoc::Document + + references :address + end + + let(:address) { Address.new(:_id => BSON::ObjectID.new) } + let(:person) { Person.new } + + it "resets the object to nil" do + person.address = address + person.address_id = nil + person.address.should be_nil + end + end end context "Named Reference" do class Person include MongoDoc::Document @@ -61,22 +78,52 @@ Person._keys.should include(:work_address_id) end end end - describe "setting the id" do + context "DBRef Reference" do class Person include MongoDoc::Document - references :address + db_references :address end let(:address) { Address.new(:_id => BSON::ObjectID.new) } let(:person) { Person.new } + subject { person } - it "resets the object to nil" do - person.address = address - person.address_id = nil - person.address.should be_nil + context "Object accessor" do + it { should respond_to(:address) } + it { should respond_to(:address=) } + + it "is not part of the persistent key set" do + Person._keys.should_not include(:address) + end + end + + context "DBRef accessor" do + it { should respond_to(:address_ref) } + it { should respond_to(:address_ref=) } + + it "is part of the persistent key set" do + Person._keys.should include(:address_ref) + end + end + + context "setting the object" do + it "sets the reference" do + person.address = address + person.address_ref.namespace.should == Address.collection_name + person.address_ref.object_id.should == address._id + end + end + + context "setting the reference" do + + it "resets the object to nil" do + person.address = address + person.address_ref = nil + person.address.should be_nil + end end end end