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