mongomodel 0.4.6 → 0.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Appraisals +12 -0
- data/bin/console +1 -2
- data/gemfiles/mongo_mapper.gemfile +12 -0
- data/gemfiles/mongoid.gemfile +12 -0
- data/lib/mongomodel.rb +3 -0
- data/lib/mongomodel/compatibility/mongo_mapper.rb +23 -0
- data/lib/mongomodel/compatibility/mongoid.rb +17 -0
- data/lib/mongomodel/concerns/properties.rb +5 -0
- data/lib/mongomodel/concerns/validations.rb +5 -3
- data/lib/mongomodel/support/core_extensions.rb +4 -4
- data/lib/mongomodel/support/mongo_options.rb +4 -2
- data/lib/mongomodel/support/mongo_order.rb +4 -0
- data/lib/mongomodel/support/scope.rb +1 -1
- data/lib/mongomodel/version.rb +1 -1
- data/spec/mongomodel/attributes/store_spec.rb +12 -12
- data/spec/mongomodel/concerns/associations/belongs_to_spec.rb +13 -13
- data/spec/mongomodel/concerns/associations/has_many_by_foreign_key_spec.rb +25 -25
- data/spec/mongomodel/concerns/associations/has_many_by_ids_spec.rb +25 -25
- data/spec/mongomodel/concerns/attribute_methods/before_type_cast_spec.rb +5 -5
- data/spec/mongomodel/concerns/attribute_methods/dirty_spec.rb +21 -21
- data/spec/mongomodel/concerns/attribute_methods/multi_parameter_assignment_spec.rb +3 -3
- data/spec/mongomodel/concerns/attribute_methods/protected_spec.rb +10 -10
- data/spec/mongomodel/concerns/attribute_methods/query_spec.rb +6 -6
- data/spec/mongomodel/concerns/attribute_methods/read_spec.rb +6 -6
- data/spec/mongomodel/concerns/attribute_methods/write_spec.rb +5 -5
- data/spec/mongomodel/concerns/attribute_methods_spec.rb +5 -5
- data/spec/mongomodel/concerns/attributes_spec.rb +13 -13
- data/spec/mongomodel/concerns/callbacks_spec.rb +11 -11
- data/spec/mongomodel/concerns/logging_spec.rb +2 -2
- data/spec/mongomodel/concerns/observing_spec.rb +3 -3
- data/spec/mongomodel/concerns/pretty_inspect_spec.rb +5 -5
- data/spec/mongomodel/concerns/properties_spec.rb +6 -6
- data/spec/mongomodel/concerns/serialization/json_serialization_spec.rb +6 -6
- data/spec/mongomodel/concerns/timestamps_spec.rb +10 -10
- data/spec/mongomodel/concerns/translation_spec.rb +1 -1
- data/spec/mongomodel/concerns/validations_spec.rb +12 -4
- data/spec/mongomodel/document/callbacks_spec.rb +10 -10
- data/spec/mongomodel/document/collection_modifiers_spec.rb +1 -1
- data/spec/mongomodel/document/dynamic_finders_spec.rb +5 -5
- data/spec/mongomodel/document/finders_spec.rb +9 -9
- data/spec/mongomodel/document/indexes_spec.rb +19 -19
- data/spec/mongomodel/document/optimistic_locking_spec.rb +8 -8
- data/spec/mongomodel/document/persistence_spec.rb +38 -38
- data/spec/mongomodel/document/scopes_spec.rb +8 -8
- data/spec/mongomodel/document/validations/uniqueness_spec.rb +9 -9
- data/spec/mongomodel/document/validations_spec.rb +16 -16
- data/spec/mongomodel/document_spec.rb +11 -11
- data/spec/mongomodel/embedded_document_spec.rb +13 -13
- data/spec/mongomodel/mongomodel_spec.rb +4 -4
- data/spec/mongomodel/support/collection_spec.rb +40 -40
- data/spec/mongomodel/support/map_spec.rb +41 -41
- data/spec/mongomodel/support/mongo_operator_spec.rb +11 -9
- data/spec/mongomodel/support/mongo_options_spec.rb +17 -17
- data/spec/mongomodel/support/mongo_order_spec.rb +22 -22
- data/spec/mongomodel/support/property_spec.rb +21 -12
- data/spec/mongomodel/support/scope_spec.rb +134 -134
- data/spec/spec_helper.rb +1 -0
- data/spec/specdoc.opts +0 -3
- metadata +7 -5
@@ -11,19 +11,19 @@ module MongoModel
|
|
11
11
|
|
12
12
|
describe "#query_attribute" do
|
13
13
|
context "string attribute" do
|
14
|
-
it "
|
14
|
+
it "returns true if the attribute is not blank" do
|
15
15
|
subject.foo = 'set foo'
|
16
16
|
subject.query_attribute(:foo).should be_true
|
17
17
|
subject.foo?.should be_true
|
18
18
|
end
|
19
19
|
|
20
|
-
it "
|
20
|
+
it "returns false if the attribute is nil" do
|
21
21
|
subject.foo = nil
|
22
22
|
subject.query_attribute(:foo).should be_false
|
23
23
|
subject.foo?.should be_false
|
24
24
|
end
|
25
25
|
|
26
|
-
it "
|
26
|
+
it "returns false if the attribute is blank" do
|
27
27
|
subject.foo = ''
|
28
28
|
subject.query_attribute(:foo).should be_false
|
29
29
|
subject.foo?.should be_false
|
@@ -31,19 +31,19 @@ module MongoModel
|
|
31
31
|
end
|
32
32
|
|
33
33
|
context "boolean attribute" do
|
34
|
-
it "
|
34
|
+
it "returns true if the attribute is true" do
|
35
35
|
subject.boolean = true
|
36
36
|
subject.query_attribute(:boolean).should be_true
|
37
37
|
subject.boolean?.should be_true
|
38
38
|
end
|
39
39
|
|
40
|
-
it "
|
40
|
+
it "returns false if the attribute is nil" do
|
41
41
|
subject.boolean = nil
|
42
42
|
subject.query_attribute(:boolean).should be_false
|
43
43
|
subject.boolean?.should be_false
|
44
44
|
end
|
45
45
|
|
46
|
-
it "
|
46
|
+
it "returns false if the attribute is false" do
|
47
47
|
subject.boolean = false
|
48
48
|
subject.query_attribute(:boolean).should be_false
|
49
49
|
subject.boolean?.should be_false
|
@@ -10,28 +10,28 @@ module MongoModel
|
|
10
10
|
|
11
11
|
describe "#read_attribute" do
|
12
12
|
context "valid property" do
|
13
|
-
it "
|
13
|
+
it "returns the attribute value" do
|
14
14
|
subject.read_attribute(:foo).should == 'value of foo'
|
15
15
|
end
|
16
16
|
|
17
|
-
it "
|
17
|
+
it "defines a reader method" do
|
18
18
|
subject.foo.should == 'value of foo'
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
context "no property" do
|
23
|
-
it "
|
23
|
+
it "returns the attribute value" do
|
24
24
|
subject.read_attribute(:bar).should == 'value of bar'
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
27
|
+
it "does not define a reader method" do
|
28
28
|
lambda { subject.bar }.should raise_error(NoMethodError)
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
33
|
describe "#[]" do
|
34
|
-
it "
|
34
|
+
it "reads the given attribute" do
|
35
35
|
subject.should_receive(:read_attribute).with(:foo).and_return('value of foo')
|
36
36
|
subject[:foo].should == 'value of foo'
|
37
37
|
end
|
@@ -44,7 +44,7 @@ module MongoModel
|
|
44
44
|
subject { TestDocument.new }
|
45
45
|
|
46
46
|
describe "#id" do
|
47
|
-
it "
|
47
|
+
it "returns id from attributes" do
|
48
48
|
subject.id.should == subject.attributes[:id]
|
49
49
|
end
|
50
50
|
end
|
@@ -10,31 +10,31 @@ module MongoModel
|
|
10
10
|
|
11
11
|
describe "#write_attribute" do
|
12
12
|
context "with property" do
|
13
|
-
it "
|
13
|
+
it "sets the attribute hash" do
|
14
14
|
subject.write_attribute(:foo, 'set foo')
|
15
15
|
subject.attributes[:foo].should == 'set foo'
|
16
16
|
end
|
17
17
|
|
18
|
-
it "
|
18
|
+
it "defines a writer method" do
|
19
19
|
subject.foo = 'set foo'
|
20
20
|
subject.attributes[:foo].should == 'set foo'
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
context "no property" do
|
25
|
-
it "
|
25
|
+
it "sets the attribute hash" do
|
26
26
|
subject.write_attribute(:bar, 'set bar')
|
27
27
|
subject.attributes[:bar].should == 'set bar'
|
28
28
|
end
|
29
29
|
|
30
|
-
it "
|
30
|
+
it "does not define a writer method" do
|
31
31
|
lambda { subject.bar = 'set bar' }.should raise_error(NoMethodError)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
describe "#[]=" do
|
37
|
-
it "
|
37
|
+
it "writes the given attribute" do
|
38
38
|
subject.should_receive(:write_attribute).with(:foo, 'value of foo')
|
39
39
|
subject[:foo] = 'value of foo'
|
40
40
|
end
|
@@ -11,7 +11,7 @@ module MongoModel
|
|
11
11
|
|
12
12
|
subject { TestDocument.new }
|
13
13
|
|
14
|
-
it "
|
14
|
+
it "does not overwrite an existing method" do
|
15
15
|
subject.foo(1).should == "from method"
|
16
16
|
end
|
17
17
|
|
@@ -19,7 +19,7 @@ module MongoModel
|
|
19
19
|
define_class(:SubDocument, :TestDocument)
|
20
20
|
subject { SubDocument.new }
|
21
21
|
|
22
|
-
it "
|
22
|
+
it "does not overwrite methods defined on the superclass" do
|
23
23
|
subject.foo(1).should == "from method"
|
24
24
|
end
|
25
25
|
end
|
@@ -29,7 +29,7 @@ module MongoModel
|
|
29
29
|
def foo(a); "from method"; end
|
30
30
|
end
|
31
31
|
|
32
|
-
it "
|
32
|
+
it "does not overwrite methods defined on the included module" do
|
33
33
|
TestDocument.send(:include, TestModule)
|
34
34
|
subject.foo(1).should == "from method"
|
35
35
|
end
|
@@ -47,7 +47,7 @@ module MongoModel
|
|
47
47
|
end
|
48
48
|
|
49
49
|
context "the base class" do
|
50
|
-
it "
|
50
|
+
it "does not overwrite methods defined within the concern" do
|
51
51
|
TestDocument.send(:include, TestConcern)
|
52
52
|
subject.bar(1).should == "from concern"
|
53
53
|
end
|
@@ -57,7 +57,7 @@ module MongoModel
|
|
57
57
|
define_class(:SubDocument, :TestDocument)
|
58
58
|
subject { SubDocument.new }
|
59
59
|
|
60
|
-
it "
|
60
|
+
it "does not overwrite methods defined within the concern" do
|
61
61
|
SubDocument.send(:include, TestConcern)
|
62
62
|
subject.bar(1).should == "from concern"
|
63
63
|
end
|
@@ -19,12 +19,12 @@ module MongoModel
|
|
19
19
|
specs_for(Document, EmbeddedDocument) do
|
20
20
|
define_class(:TestDocument, described_class)
|
21
21
|
|
22
|
-
it "
|
22
|
+
it "has an attributes store on the instance" do
|
23
23
|
doc = TestDocument.new
|
24
24
|
doc.attributes.should be_an_instance_of(MongoModel::Attributes::Store)
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
27
|
+
it "converts to mongo representation" do
|
28
28
|
doc = TestDocument.new
|
29
29
|
doc.to_mongo.should == doc.attributes.to_mongo
|
30
30
|
end
|
@@ -51,22 +51,22 @@ module MongoModel
|
|
51
51
|
let(:reloaded) { TestDocument.find(subject.id) }
|
52
52
|
end
|
53
53
|
|
54
|
-
it "
|
54
|
+
it "reads the correct value from attributes" do
|
55
55
|
subject.test_property.should == value
|
56
56
|
end
|
57
57
|
|
58
|
-
it "
|
58
|
+
it "reads the correct value after reloading" do
|
59
59
|
reloaded.test_property.should == subject.test_property
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
it "
|
64
|
+
it "has an attributes store" do
|
65
65
|
doc = TestDocument.new
|
66
66
|
doc.attributes.should be_an_instance_of(MongoModel::Attributes::Store)
|
67
67
|
end
|
68
68
|
|
69
|
-
it "
|
69
|
+
it "duplicates attributes when duplicating object" do
|
70
70
|
original = TestDocument.new
|
71
71
|
duplicate = original.dup
|
72
72
|
|
@@ -79,18 +79,18 @@ module MongoModel
|
|
79
79
|
property :age, Integer, :default => 21
|
80
80
|
end
|
81
81
|
|
82
|
-
it "
|
82
|
+
it "is initializable with attributes hash" do
|
83
83
|
doc = Person.new(:name => 'Fred', :age => 42)
|
84
84
|
doc.name.should == 'Fred'
|
85
85
|
doc.age.should == 42
|
86
86
|
end
|
87
87
|
|
88
|
-
it "
|
88
|
+
it "uses default attributes when initializing with partial attributes hash" do
|
89
89
|
doc = Person.new(:name => 'Maurice')
|
90
90
|
doc.age.should == 21
|
91
91
|
end
|
92
92
|
|
93
|
-
it "
|
93
|
+
it "loads from mongo representation" do
|
94
94
|
doc = Person.from_mongo({ 'name' => 'James', 'age' => 15 })
|
95
95
|
doc.name.should == 'James'
|
96
96
|
doc.age.should == 15
|
@@ -108,12 +108,12 @@ module MongoModel
|
|
108
108
|
|
109
109
|
subject { TestDocument.new }
|
110
110
|
|
111
|
-
it "
|
111
|
+
it "calls custom property methods" do
|
112
112
|
subject.attributes = { :test_property => 'property value' }
|
113
113
|
subject.test_property.should == 'set from method'
|
114
114
|
end
|
115
115
|
|
116
|
-
it "
|
116
|
+
it "uses write_attribute if no such property" do
|
117
117
|
subject.attributes = { :non_property => 'property value' }
|
118
118
|
subject.read_attribute(:non_property).should == 'property value'
|
119
119
|
end
|
@@ -122,7 +122,7 @@ module MongoModel
|
|
122
122
|
describe "#new" do
|
123
123
|
define_class(:TestDocument, described_class)
|
124
124
|
|
125
|
-
it "
|
125
|
+
it "yields the instance to a block if provided" do
|
126
126
|
block_called = false
|
127
127
|
|
128
128
|
TestDocument.new do |doc|
|
@@ -145,7 +145,7 @@ module MongoModel
|
|
145
145
|
|
146
146
|
it { should be_frozen }
|
147
147
|
|
148
|
-
it "
|
148
|
+
it "does not allow changes to the attributes hash" do
|
149
149
|
lambda { subject.attributes[:test_property] = 'Change' }.should raise_error
|
150
150
|
end
|
151
151
|
end
|
@@ -12,7 +12,7 @@ module MongoModel
|
|
12
12
|
property :things, Collection[ChildThingDocument]
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "calls callbacks on all embedded documents when adding a new one" do
|
16
16
|
parent = ParentDocument.create!
|
17
17
|
parent.things = Collection[ChildThingDocument].new
|
18
18
|
parent.things << ChildThingDocument.new(:name => "Thing One")
|
@@ -35,46 +35,46 @@ module MongoModel
|
|
35
35
|
let(:child) { ChildDocument.new }
|
36
36
|
let(:parent) { ParentDocument.create!(:child => child) }
|
37
37
|
|
38
|
-
it "
|
38
|
+
it "runs each type of callback when initializing" do
|
39
39
|
instance = ChildDocument.new
|
40
40
|
instance.should run_callbacks(:after_initialize)
|
41
41
|
end
|
42
42
|
|
43
|
-
it "
|
43
|
+
it "runs each type of callback on find" do
|
44
44
|
instance = ParentDocument.find(parent.id).child
|
45
45
|
instance.should run_callbacks(:after_initialize, :after_find)
|
46
46
|
end
|
47
47
|
|
48
|
-
it "
|
48
|
+
it "runs each type of callback when validating a new document" do
|
49
49
|
instance = ChildDocument.new
|
50
50
|
instance.valid?
|
51
51
|
instance.should run_callbacks(:after_initialize, :before_validation, :after_validation)
|
52
52
|
end
|
53
53
|
|
54
|
-
it "
|
54
|
+
it "runs each type of callback when validating an existing document" do
|
55
55
|
instance = ParentDocument.find(parent.id).child
|
56
56
|
instance.valid?
|
57
57
|
instance.should run_callbacks(:after_initialize, :after_find, :before_validation, :after_validation)
|
58
58
|
end
|
59
59
|
|
60
|
-
it "
|
60
|
+
it "runs each type of callback when creating a document" do
|
61
61
|
instance = ParentDocument.create!(:child => ChildDocument.new)
|
62
62
|
instance.child.should run_callbacks(:after_initialize, :before_validation, :after_validation, :before_save, :before_create, :after_create, :after_save)
|
63
63
|
end
|
64
64
|
|
65
|
-
it "
|
65
|
+
it "runs each type of callback when saving an existing document" do
|
66
66
|
instance = ParentDocument.find(parent.id)
|
67
67
|
instance.save
|
68
68
|
instance.child.should run_callbacks(:after_initialize, :after_find, :before_validation, :after_validation, :before_save, :before_update, :after_update, :after_save)
|
69
69
|
end
|
70
70
|
|
71
|
-
it "
|
71
|
+
it "runs each type of callback when destroying a document" do
|
72
72
|
instance = ParentDocument.find(parent.id)
|
73
73
|
instance.destroy
|
74
74
|
instance.child.should run_callbacks(:after_initialize, :after_find, :before_destroy, :after_destroy)
|
75
75
|
end
|
76
76
|
|
77
|
-
it "
|
77
|
+
it "does not run destroy callbacks when deleting a document" do
|
78
78
|
instance = ParentDocument.find(parent.id)
|
79
79
|
instance.delete
|
80
80
|
instance.child.should run_callbacks(:after_initialize, :after_find)
|
@@ -95,13 +95,13 @@ module MongoModel
|
|
95
95
|
let(:parent) { ParentDocument.new(:child => child) }
|
96
96
|
|
97
97
|
describe "#save" do
|
98
|
-
it "
|
98
|
+
it "returns false" do
|
99
99
|
parent.save.should be_false
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
103
|
describe "#save!" do
|
104
|
-
it "
|
104
|
+
it "raises a MongoModel::DocumentNotSaved exception" do
|
105
105
|
lambda { parent.save! }.should raise_error(MongoModel::DocumentNotSaved)
|
106
106
|
end
|
107
107
|
end
|
@@ -8,11 +8,11 @@ module MongoModel
|
|
8
8
|
let(:logger) { mock('logger').as_null_object }
|
9
9
|
before(:each) { MongoModel.logger = logger }
|
10
10
|
|
11
|
-
it "
|
11
|
+
it "has a logger reader on the class" do
|
12
12
|
TestDocument.logger.should == logger
|
13
13
|
end
|
14
14
|
|
15
|
-
it "
|
15
|
+
it "has a logger reader on the instance" do
|
16
16
|
TestDocument.new.logger.should == logger
|
17
17
|
end
|
18
18
|
end
|
@@ -16,11 +16,11 @@ module MongoModel
|
|
16
16
|
|
17
17
|
subject { TestDocument.new }
|
18
18
|
|
19
|
-
it "
|
19
|
+
it "has an #instance method to access the observer singleton" do
|
20
20
|
TestObserver.instance.should eq(TestObserver.instance)
|
21
21
|
end
|
22
22
|
|
23
|
-
it "
|
23
|
+
it "invokes the TestObserver singleton's after_save method after saving" do
|
24
24
|
callback = stub
|
25
25
|
callback.should_receive(:call).with(subject)
|
26
26
|
|
@@ -29,4 +29,4 @@ module MongoModel
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
32
|
-
end
|
32
|
+
end
|
@@ -4,7 +4,7 @@ module MongoModel
|
|
4
4
|
specs_for(Document, EmbeddedDocument) do
|
5
5
|
describe "#inspect" do
|
6
6
|
context "on base class" do
|
7
|
-
it "
|
7
|
+
it "returns class name" do
|
8
8
|
described_class.inspect.should == described_class.name
|
9
9
|
end
|
10
10
|
end
|
@@ -13,7 +13,7 @@ module MongoModel
|
|
13
13
|
context "without properties" do
|
14
14
|
define_class(:TestDocument, described_class)
|
15
15
|
|
16
|
-
it "
|
16
|
+
it "returns class name" do
|
17
17
|
TestDocument.inspect.should == 'TestDocument()'
|
18
18
|
end
|
19
19
|
end
|
@@ -24,7 +24,7 @@ module MongoModel
|
|
24
24
|
property :age, Integer
|
25
25
|
end
|
26
26
|
|
27
|
-
it "
|
27
|
+
it "returns class name and property definitions" do
|
28
28
|
TestDocument.inspect.should == 'TestDocument(name: String, age: Integer)'
|
29
29
|
end
|
30
30
|
end
|
@@ -42,7 +42,7 @@ module MongoModel
|
|
42
42
|
|
43
43
|
subject { TestDocument.new(:id => 'abc-123', :name => 'Doc name', :age => 54) }
|
44
44
|
|
45
|
-
it "
|
45
|
+
it "returns class name and property values" do
|
46
46
|
subject.inspect.should == '#<TestDocument id: abc-123, name: "Doc name", age: 54>'
|
47
47
|
end
|
48
48
|
end
|
@@ -59,7 +59,7 @@ module MongoModel
|
|
59
59
|
|
60
60
|
subject { TestDocument.new(:name => 'Doc name', :age => 54) }
|
61
61
|
|
62
|
-
it "
|
62
|
+
it "returns class name and property values" do
|
63
63
|
subject.inspect.should == '#<TestDocument name: "Doc name", age: 54>'
|
64
64
|
end
|
65
65
|
end
|
@@ -11,14 +11,14 @@ module MongoModel
|
|
11
11
|
property :skill, String
|
12
12
|
end
|
13
13
|
|
14
|
-
it "
|
14
|
+
it "has a populated hash of properties" do
|
15
15
|
Person.properties.should include({
|
16
16
|
:name => Properties::Property.new(:name, String),
|
17
17
|
:age => Properties::Property.new(:age, Integer, :default => 21)
|
18
18
|
})
|
19
19
|
end
|
20
20
|
|
21
|
-
it "
|
21
|
+
it "extends properties in subclasses" do
|
22
22
|
SkilledPerson.properties.should include({
|
23
23
|
:name => Properties::Property.new(:name, String),
|
24
24
|
:age => Properties::Property.new(:age, Integer, :default => 21),
|
@@ -26,7 +26,7 @@ module MongoModel
|
|
26
26
|
})
|
27
27
|
end
|
28
28
|
|
29
|
-
it "
|
29
|
+
it "has a set of internal property names" do
|
30
30
|
Person.internal_properties.should include(Person.properties[:type])
|
31
31
|
Person.internal_properties.should include(Person.properties[:id]) if described_class == Document
|
32
32
|
end
|
@@ -40,14 +40,14 @@ module MongoModel
|
|
40
40
|
let(:with_manager) { Factory.create!(:manager => person) }
|
41
41
|
let(:without_manager) { Factory.create! }
|
42
42
|
|
43
|
-
it "
|
43
|
+
it "loads correctly when property is set" do
|
44
44
|
factory = Factory.find(with_manager.id)
|
45
45
|
factory.manager.should be_an_instance_of(SkilledPerson)
|
46
46
|
factory.manager.name.should == "Joe"
|
47
47
|
factory.manager.skill.should == "Management"
|
48
48
|
end
|
49
49
|
|
50
|
-
it "
|
50
|
+
it "loads correctly when property is nil" do
|
51
51
|
factory = Factory.find(without_manager.id)
|
52
52
|
factory.manager.should be_nil
|
53
53
|
end
|
@@ -60,7 +60,7 @@ module MongoModel
|
|
60
60
|
|
61
61
|
subject { ParentClass.new }
|
62
62
|
|
63
|
-
it "
|
63
|
+
it "includes methods from the module" do
|
64
64
|
subject.should respond_to(:custom_accessor)
|
65
65
|
subject.custom_accessor.should == "Custom accessor method"
|
66
66
|
end
|