mongomodel 0.5.5 → 0.5.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +23 -11
  3. data/gemfiles/rails-3.2.gemfile +2 -2
  4. data/gemfiles/rails-4-observers.gemfile +1 -1
  5. data/gemfiles/rails-4.1.gemfile +2 -2
  6. data/gemfiles/{mongoid.gemfile → rails-4.2.gemfile} +2 -3
  7. data/gemfiles/{mongo_mapper.gemfile → rails-5.0.gemfile} +2 -3
  8. data/gemfiles/rails-5.1.gemfile +10 -0
  9. data/gemfiles/rails-5.2.gemfile +10 -0
  10. data/lib/mongomodel.rb +15 -15
  11. data/lib/mongomodel/attributes/mongo.rb +7 -7
  12. data/lib/mongomodel/attributes/store.rb +4 -4
  13. data/lib/mongomodel/attributes/typecasting.rb +7 -7
  14. data/lib/mongomodel/compatibility/mongo_mapper.rb +3 -3
  15. data/lib/mongomodel/compatibility/mongoid.rb +3 -3
  16. data/lib/mongomodel/concerns/abstract_class.rb +3 -3
  17. data/lib/mongomodel/concerns/activemodel.rb +4 -4
  18. data/lib/mongomodel/concerns/associations.rb +8 -8
  19. data/lib/mongomodel/concerns/associations/base/association.rb +5 -5
  20. data/lib/mongomodel/concerns/associations/base/definition.rb +4 -4
  21. data/lib/mongomodel/concerns/associations/base/proxy.rb +1 -1
  22. data/lib/mongomodel/concerns/associations/belongs_to.rb +19 -19
  23. data/lib/mongomodel/concerns/associations/has_many_by_foreign_key.rb +36 -36
  24. data/lib/mongomodel/concerns/associations/has_many_by_ids.rb +34 -34
  25. data/lib/mongomodel/concerns/attribute_methods.rb +10 -10
  26. data/lib/mongomodel/concerns/attribute_methods/before_type_cast.rb +4 -4
  27. data/lib/mongomodel/concerns/attribute_methods/dirty.rb +95 -13
  28. data/lib/mongomodel/concerns/attribute_methods/forbidden.rb +1 -1
  29. data/lib/mongomodel/concerns/attribute_methods/multi_parameter_assignment.rb +6 -6
  30. data/lib/mongomodel/concerns/attribute_methods/nested.rb +18 -18
  31. data/lib/mongomodel/concerns/attribute_methods/protected.rb +3 -3
  32. data/lib/mongomodel/concerns/attribute_methods/query.rb +3 -3
  33. data/lib/mongomodel/concerns/attribute_methods/read.rb +4 -4
  34. data/lib/mongomodel/concerns/attribute_methods/write.rb +4 -4
  35. data/lib/mongomodel/concerns/attributes.rb +18 -18
  36. data/lib/mongomodel/concerns/callbacks.rb +7 -7
  37. data/lib/mongomodel/concerns/document_parent.rb +2 -2
  38. data/lib/mongomodel/concerns/logging.rb +2 -2
  39. data/lib/mongomodel/concerns/map_reduce.rb +11 -11
  40. data/lib/mongomodel/concerns/pretty_inspect.rb +3 -3
  41. data/lib/mongomodel/concerns/properties.rb +18 -18
  42. data/lib/mongomodel/concerns/record_status.rb +9 -13
  43. data/lib/mongomodel/concerns/serialization.rb +4 -4
  44. data/lib/mongomodel/concerns/timestamps.rb +4 -4
  45. data/lib/mongomodel/concerns/translation.rb +2 -2
  46. data/lib/mongomodel/concerns/validations.rb +5 -5
  47. data/lib/mongomodel/concerns/validations/associated.rb +1 -1
  48. data/lib/mongomodel/document.rb +6 -6
  49. data/lib/mongomodel/document/callbacks.rb +15 -21
  50. data/lib/mongomodel/document/collection_modifiers.rb +5 -5
  51. data/lib/mongomodel/document/dynamic_finders.rb +1 -1
  52. data/lib/mongomodel/document/indexes.rb +19 -19
  53. data/lib/mongomodel/document/optimistic_locking.rb +7 -7
  54. data/lib/mongomodel/document/persistence.rb +23 -23
  55. data/lib/mongomodel/document/scopes.rb +20 -20
  56. data/lib/mongomodel/document/validations.rb +6 -6
  57. data/lib/mongomodel/document/validations/uniqueness.rb +11 -11
  58. data/lib/mongomodel/embedded_document.rb +11 -11
  59. data/lib/mongomodel/locale/en.yml +0 -1
  60. data/lib/mongomodel/log_subscriber.rb +5 -5
  61. data/lib/mongomodel/railtie.rb +13 -13
  62. data/lib/mongomodel/support/collection.rb +31 -31
  63. data/lib/mongomodel/support/configuration.rb +11 -11
  64. data/lib/mongomodel/support/core_extensions.rb +1 -1
  65. data/lib/mongomodel/support/dynamic_finder.rb +12 -12
  66. data/lib/mongomodel/support/exceptions.rb +6 -6
  67. data/lib/mongomodel/support/instrumented_collection.rb +20 -20
  68. data/lib/mongomodel/support/map.rb +33 -33
  69. data/lib/mongomodel/support/mongo_operator.rb +6 -6
  70. data/lib/mongomodel/support/mongo_options.rb +18 -18
  71. data/lib/mongomodel/support/mongo_order.rb +16 -16
  72. data/lib/mongomodel/support/paginator.rb +8 -8
  73. data/lib/mongomodel/support/reference.rb +10 -10
  74. data/lib/mongomodel/support/scope.rb +37 -37
  75. data/lib/mongomodel/support/scope/array_methods.rb +1 -1
  76. data/lib/mongomodel/support/scope/batches.rb +1 -1
  77. data/lib/mongomodel/support/scope/dynamic_finders.rb +1 -1
  78. data/lib/mongomodel/support/scope/finder_methods.rb +7 -7
  79. data/lib/mongomodel/support/scope/load_methods.rb +1 -1
  80. data/lib/mongomodel/support/scope/pagination.rb +1 -1
  81. data/lib/mongomodel/support/scope/query_methods.rb +6 -6
  82. data/lib/mongomodel/support/scope/spawn_methods.rb +8 -8
  83. data/lib/mongomodel/support/types.rb +2 -2
  84. data/lib/mongomodel/support/types/array.rb +1 -1
  85. data/lib/mongomodel/support/types/boolean.rb +3 -3
  86. data/lib/mongomodel/support/types/custom.rb +3 -3
  87. data/lib/mongomodel/support/types/date.rb +2 -2
  88. data/lib/mongomodel/support/types/date_time.rb +6 -16
  89. data/lib/mongomodel/support/types/float.rb +1 -1
  90. data/lib/mongomodel/support/types/hash.rb +1 -1
  91. data/lib/mongomodel/support/types/integer.rb +13 -10
  92. data/lib/mongomodel/support/types/object.rb +5 -5
  93. data/lib/mongomodel/support/types/rational.rb +3 -3
  94. data/lib/mongomodel/support/types/time.rb +2 -2
  95. data/lib/mongomodel/version.rb +1 -1
  96. data/lib/rails/generators/mongo_model/config/templates/mongomodel.yml +3 -4
  97. data/lib/rails/generators/mongo_model/model/model_generator.rb +3 -3
  98. data/mongomodel.gemspec +5 -4
  99. data/spec/mongomodel/attributes/store_spec.rb +21 -21
  100. data/spec/mongomodel/concerns/activemodel_spec.rb +4 -4
  101. data/spec/mongomodel/concerns/associations/base/association_spec.rb +12 -12
  102. data/spec/mongomodel/concerns/associations/belongs_to_spec.rb +34 -21
  103. data/spec/mongomodel/concerns/associations/has_many_by_foreign_key_spec.rb +53 -53
  104. data/spec/mongomodel/concerns/associations/has_many_by_ids_spec.rb +30 -30
  105. data/spec/mongomodel/concerns/attribute_methods/before_type_cast_spec.rb +7 -7
  106. data/spec/mongomodel/concerns/attribute_methods/dirty_spec.rb +45 -41
  107. data/spec/mongomodel/concerns/attribute_methods/multi_parameter_assignment_spec.rb +7 -7
  108. data/spec/mongomodel/concerns/attribute_methods/nested_spec.rb +31 -31
  109. data/spec/mongomodel/concerns/attribute_methods/protected_spec.rb +15 -15
  110. data/spec/mongomodel/concerns/attribute_methods/query_spec.rb +19 -19
  111. data/spec/mongomodel/concerns/attribute_methods/read_spec.rb +9 -9
  112. data/spec/mongomodel/concerns/attribute_methods/write_spec.rb +6 -6
  113. data/spec/mongomodel/concerns/attribute_methods_spec.rb +13 -13
  114. data/spec/mongomodel/concerns/attributes_spec.rb +34 -34
  115. data/spec/mongomodel/concerns/callbacks_spec.rb +25 -21
  116. data/spec/mongomodel/concerns/logging_spec.rb +5 -3
  117. data/spec/mongomodel/concerns/map_reduce_spec.rb +19 -19
  118. data/spec/mongomodel/concerns/observing_spec.rb +3 -3
  119. data/spec/mongomodel/concerns/pretty_inspect_spec.rb +10 -10
  120. data/spec/mongomodel/concerns/properties_spec.rb +11 -11
  121. data/spec/mongomodel/concerns/serialization/json_serialization_spec.rb +13 -13
  122. data/spec/mongomodel/concerns/timestamps_spec.rb +39 -39
  123. data/spec/mongomodel/concerns/validations_spec.rb +41 -38
  124. data/spec/mongomodel/document/callbacks_spec.rb +20 -16
  125. data/spec/mongomodel/document/collection_modifiers_spec.rb +16 -16
  126. data/spec/mongomodel/document/dynamic_finders_spec.rb +46 -46
  127. data/spec/mongomodel/document/finders_spec.rb +15 -15
  128. data/spec/mongomodel/document/indexes_spec.rb +29 -29
  129. data/spec/mongomodel/document/optimistic_locking_spec.rb +16 -16
  130. data/spec/mongomodel/document/persistence_spec.rb +39 -39
  131. data/spec/mongomodel/document/scopes_spec.rb +17 -17
  132. data/spec/mongomodel/document/validations/uniqueness_spec.rb +46 -46
  133. data/spec/mongomodel/document/validations_spec.rb +35 -35
  134. data/spec/mongomodel/document_spec.rb +19 -19
  135. data/spec/mongomodel/embedded_document_spec.rb +19 -19
  136. data/spec/mongomodel/mongomodel_spec.rb +7 -6
  137. data/spec/mongomodel/support/collection_spec.rb +54 -54
  138. data/spec/mongomodel/support/configuration_spec.rb +1 -1
  139. data/spec/mongomodel/support/map_spec.rb +66 -66
  140. data/spec/mongomodel/support/mongo_operator_spec.rb +5 -5
  141. data/spec/mongomodel/support/mongo_options_spec.rb +42 -42
  142. data/spec/mongomodel/support/mongo_order_spec.rb +24 -24
  143. data/spec/mongomodel/support/paginator_spec.rb +15 -15
  144. data/spec/mongomodel/support/property_spec.rb +29 -23
  145. data/spec/mongomodel/support/scope_spec.rb +205 -204
  146. data/spec/spec_helper.rb +13 -2
  147. data/spec/support/callbacks.rb +3 -8
  148. data/spec/support/helpers/define_class.rb +7 -7
  149. data/spec/support/helpers/document_finder_stubs.rb +6 -6
  150. data/spec/support/helpers/specs_for.rb +1 -1
  151. data/spec/support/helpers/validations.rb +1 -1
  152. data/spec/support/matchers/find_with.rb +8 -8
  153. data/spec/support/matchers/respond_to_boolean.rb +3 -3
  154. data/spec/support/matchers/run_callbacks.rb +6 -9
  155. data/spec/support/models.rb +5 -5
  156. metadata +23 -7
@@ -6,13 +6,13 @@ module MongoModel
6
6
  define_class(:Book, EmbeddedDocument) do
7
7
  has_many :chapters
8
8
  end
9
-
9
+
10
10
  it "defaults to :by => :ids" do
11
11
  Book.associations[:chapters].should be_a(Associations::HasManyByIds)
12
12
  end
13
13
  end
14
14
  end
15
-
15
+
16
16
  specs_for(Document, EmbeddedDocument) do
17
17
  shared_examples_for "accessing and manipulating a has_many :by => :ids association" do
18
18
  it "accesses chapters" do
@@ -136,7 +136,7 @@ module MongoModel
136
136
  should_raise("addding chapters with unshift") { subject.chapters.unshift(nonchapter) }
137
137
  end
138
138
  end
139
-
139
+
140
140
  describe "has_many :by => :ids association" do
141
141
  define_class(:Chapter, Document)
142
142
  define_class(:IllustratedChapter, :Chapter)
@@ -144,34 +144,34 @@ module MongoModel
144
144
  has_many :chapters, :by => :ids
145
145
  end
146
146
  define_class(:NonChapter, Document)
147
-
147
+
148
148
  let(:chapter1) { Chapter.create!(:id => '1') }
149
149
  let(:chapter2) { IllustratedChapter.create!(:id => '2') }
150
150
  let(:chapter3) { Chapter.create!(:id => '3') }
151
151
  let(:nonchapter) { NonChapter.create! }
152
-
152
+
153
153
  context "when uninitialized" do
154
154
  subject { Book.new }
155
-
155
+
156
156
  it "is empty" do
157
157
  subject.chapters.should be_empty
158
158
  end
159
-
159
+
160
160
  it "has an empty ids array" do
161
161
  subject.chapter_ids.should be_empty
162
162
  end
163
163
  end
164
-
164
+
165
165
  context "with chapters set" do
166
166
  subject { Book.new(:chapters => [chapter1, chapter2]) }
167
167
  it_should_behave_like "accessing and manipulating a has_many :by => :ids association"
168
168
  end
169
-
169
+
170
170
  context "with chapter ids set" do
171
171
  subject { Book.new(:chapter_ids => [chapter1.id, chapter2.id]) }
172
172
  it_should_behave_like "accessing and manipulating a has_many :by => :ids association"
173
173
  end
174
-
174
+
175
175
  context "when loaded from database" do
176
176
  if specing?(Document)
177
177
  let(:book) { Book.create!(:chapter_ids => [chapter1.id, chapter2.id]) }
@@ -184,9 +184,9 @@ module MongoModel
184
184
  let(:shelf) { Bookshelf.create!(:book => book) }
185
185
  subject { Bookshelf.find(shelf.id).book }
186
186
  end
187
-
187
+
188
188
  it_should_behave_like "accessing and manipulating a has_many :by => :ids association"
189
-
189
+
190
190
  context "when child objects are destroyed" do
191
191
  it "does not load the deleted child objects" do
192
192
  chapter1.destroy
@@ -194,12 +194,12 @@ module MongoModel
194
194
  end
195
195
  end
196
196
  end
197
-
197
+
198
198
  describe "with :dependent => :destroy option" do
199
199
  define_class(:Book, described_class) do
200
200
  has_many :chapters, :by => :ids, :dependent => :destroy
201
201
  end
202
-
202
+
203
203
  if specing?(Document)
204
204
  subject { Book.create!(:chapters => [chapter1, chapter2, chapter3]) }
205
205
  else
@@ -209,31 +209,31 @@ module MongoModel
209
209
  let(:book) { Book.new(:chapters => [chapter1, chapter2, chapter3]) }
210
210
  subject { Bookshelf.create!(:book => book) }
211
211
  end
212
-
212
+
213
213
  context "when the parent object is destroyed" do
214
214
  it "calls destroy on the child objects" do
215
215
  chapter1.should_receive(:destroy)
216
216
  chapter2.should_receive(:destroy)
217
217
  chapter3.should_receive(:destroy)
218
-
218
+
219
219
  subject.destroy
220
220
  end
221
-
221
+
222
222
  it "removes the child objects from their collection" do
223
223
  subject.destroy
224
-
225
- Chapter.exists?(chapter1.id).should be_false
226
- Chapter.exists?(chapter2.id).should be_false
227
- Chapter.exists?(chapter3.id).should be_false
224
+
225
+ Chapter.exists?(chapter1.id).should be false
226
+ Chapter.exists?(chapter2.id).should be false
227
+ Chapter.exists?(chapter3.id).should be false
228
228
  end
229
229
  end
230
230
  end
231
-
231
+
232
232
  describe "with :dependent => :delete option" do
233
233
  define_class(:Book, described_class) do
234
234
  has_many :chapters, :by => :ids, :dependent => :delete
235
235
  end
236
-
236
+
237
237
  if specing?(Document)
238
238
  subject { Book.create!(:chapters => [chapter1, chapter2, chapter3]) }
239
239
  else
@@ -243,22 +243,22 @@ module MongoModel
243
243
  let(:book) { Book.new(:chapters => [chapter1, chapter2, chapter3]) }
244
244
  subject { Bookshelf.create!(:book => book) }
245
245
  end
246
-
246
+
247
247
  context "when the parent object is destroyed" do
248
248
  it "does not call destroy on the child objects" do
249
249
  chapter1.should_not_receive(:destroy)
250
250
  chapter2.should_not_receive(:destroy)
251
251
  chapter3.should_not_receive(:destroy)
252
-
252
+
253
253
  subject.destroy
254
254
  end
255
-
255
+
256
256
  it "removes the child objects from their collection" do
257
257
  subject.destroy
258
-
259
- Chapter.exists?(chapter1.id).should be_false
260
- Chapter.exists?(chapter2.id).should be_false
261
- Chapter.exists?(chapter3.id).should be_false
258
+
259
+ Chapter.exists?(chapter1.id).should be false
260
+ Chapter.exists?(chapter2.id).should be false
261
+ Chapter.exists?(chapter3.id).should be false
262
262
  end
263
263
  end
264
264
  end
@@ -5,39 +5,39 @@ module MongoModel
5
5
  define_class(:TestDocument, described_class) do
6
6
  property :foo, Date
7
7
  end
8
-
8
+
9
9
  subject { TestDocument.new }
10
-
10
+
11
11
  describe "#read_attribute_before_type_cast" do
12
12
  context "with property" do
13
13
  it "returns the attribute before type casting" do
14
14
  subject.attributes[:foo] = 'some date'
15
15
  subject.read_attribute_before_type_cast(:foo).should == 'some date'
16
16
  end
17
-
17
+
18
18
  it "defines a reader method" do
19
19
  subject.attributes[:foo] = 'some date'
20
20
  subject.foo_before_type_cast.should == 'some date'
21
21
  end
22
22
  end
23
-
23
+
24
24
  context "no property" do
25
25
  it "returns the attribute without type casting" do
26
26
  subject.attributes[:bar] = 'set bar'
27
27
  subject.read_attribute_before_type_cast(:bar).should == 'set bar'
28
28
  end
29
-
29
+
30
30
  it "does not define a reader method" do
31
31
  lambda { subject.bar_before_type_cast }.should raise_error(NoMethodError)
32
32
  end
33
33
  end
34
34
  end
35
-
35
+
36
36
  describe "#attributes_before_type_cast" do
37
37
  it "returns a hash of attributes before type casting" do
38
38
  subject.attributes[:foo] = 'some date'
39
39
  subject.attributes[:bar] = 'set bar'
40
-
40
+
41
41
  subject.attributes_before_type_cast[:foo].should == 'some date'
42
42
  subject.attributes_before_type_cast[:bar].should == 'set bar'
43
43
  end
@@ -14,132 +14,136 @@ module MongoModel
14
14
  property :foo, String
15
15
  property :bar, String
16
16
  end
17
-
17
+
18
18
  define_class(:ParentDocument, Document) do
19
19
  property :child, ChildDocument
20
20
  end
21
-
21
+
22
22
  let(:child) { ChildDocument.new(:foo => 'original foo') }
23
23
  let(:parent) { ParentDocument.create!(:child => child) }
24
-
24
+
25
25
  subject { parent.child }
26
26
  end
27
-
27
+
28
+ def reset_subject!
29
+ subject.respond_to?(:restore_foo!) ? subject.restore_foo! : subject.reset_foo!
30
+ end
31
+
28
32
  describe "#write_attribute" do
29
33
  before(:each) do
30
34
  subject.write_attribute(:foo, 'new foo')
31
35
  end
32
-
36
+
33
37
  it "adds the old attribute name to the changed attributes" do
34
38
  subject.changed.should include("foo")
35
39
  end
36
-
40
+
37
41
  it "does not add other attributes to the changed attributes" do
38
42
  subject.changed.should_not include("bar")
39
43
  end
40
-
44
+
41
45
  it "adds the changed attribute value to the changes hash" do
42
46
  subject.changes["foo"].should == ['original foo', 'new foo']
43
47
  end
44
-
48
+
45
49
  context "when called twice" do
46
50
  before(:each) do
47
51
  subject.write_attribute(:foo, 'new foo #2')
48
52
  end
49
-
53
+
50
54
  it "keeps the original value as the old value in the changes hash" do
51
55
  subject.changes["foo"].should == ['original foo', 'new foo #2']
52
56
  end
53
57
  end
54
58
  end
55
-
59
+
56
60
  context "with changed attributes" do
57
61
  context "attribute set to a new value" do
58
62
  before(:each) do
59
63
  subject.foo = 'foo changed'
60
64
  end
61
-
65
+
62
66
  it { should be_changed }
63
-
67
+
64
68
  it "has a changed attribute" do
65
69
  subject.foo_changed?.should == true
66
70
  end
67
-
71
+
68
72
  it "tells what the attribute was" do
69
73
  subject.foo_was.should == "original foo"
70
74
  end
71
-
75
+
72
76
  it "has an attribute change" do
73
77
  subject.foo_change.should == ["original foo", "foo changed"]
74
78
  end
75
-
76
- it "is able to reset an attribute" do
77
- subject.reset_foo!
79
+
80
+ it "is able to reset/restore an attribute" do
81
+ reset_subject!
78
82
  subject.foo.should == "original foo"
79
83
  subject.changed?.should == false
80
84
  end
81
85
  end
82
-
86
+
83
87
  context "attribute set to the original value" do
84
88
  before(:each) do
85
89
  subject.foo = 'original foo'
86
90
  end
87
-
91
+
88
92
  it { should_not be_changed }
89
-
93
+
90
94
  it "does not have a changed attribute" do
91
95
  subject.foo_changed?.should == false
92
96
  end
93
-
97
+
94
98
  it "tells what the attribute was" do
95
99
  subject.foo_was.should == "original foo"
96
100
  end
97
-
101
+
98
102
  it "does not have an attribute change" do
99
103
  subject.foo_change.should == nil
100
104
  end
101
-
102
- it "is able to reset an attribute" do
103
- subject.reset_foo!
105
+
106
+ it "is able to reset/restore an attribute" do
107
+ reset_subject!
104
108
  subject.foo.should == "original foo"
105
109
  subject.changed?.should == false
106
110
  end
107
111
  end
108
112
  end
109
-
113
+
110
114
  context "without changed attributes" do
111
115
  it { should_not be_changed }
112
-
116
+
113
117
  it "does not have a changed attribute" do
114
118
  subject.foo_changed?.should == false
115
119
  end
116
-
120
+
117
121
  it "tells what the attribute was" do
118
122
  subject.foo_was.should == "original foo"
119
123
  end
120
-
124
+
121
125
  it "does not have an attribute change" do
122
126
  subject.foo_change.should == nil
123
127
  end
124
-
125
- it "is able to reset an attribute" do
126
- subject.reset_foo!
128
+
129
+ it "is able to reset/restore an attribute" do
130
+ reset_subject!
127
131
  subject.foo.should == "original foo"
128
132
  subject.changed?.should == false
129
133
  end
130
134
  end
131
-
135
+
132
136
  context "#original_attributes" do
133
137
  context "with changes" do
134
138
  before(:each) do
135
139
  subject.foo = 'changed foo'
136
140
  end
137
-
141
+
138
142
  it "returns the attributes before changes" do
139
143
  subject.original_attributes['foo'].should == 'original foo'
140
144
  end
141
145
  end
142
-
146
+
143
147
  context "without changes" do
144
148
  it "returns the attributes hash" do
145
149
  subject.original_attributes.symbolize_keys.should == subject.attributes
@@ -147,26 +151,26 @@ module MongoModel
147
151
  end
148
152
  end
149
153
  end
150
-
154
+
151
155
  specs_for(Document) do
152
156
  define_class(:TestDocument, Document) do
153
157
  property :foo, String
154
158
  end
155
-
159
+
156
160
  subject { TestDocument.create!(:foo => 'original foo') }
157
-
161
+
158
162
  context "when saved" do
159
163
  before(:each) do
160
164
  subject.foo = 'changed foo'
161
165
  end
162
-
166
+
163
167
  context "with save" do
164
168
  it "resets the changed attributes" do
165
169
  subject.save
166
170
  subject.should_not be_changed
167
171
  end
168
172
  end
169
-
173
+
170
174
  context "with save!" do
171
175
  it "resets the changed attributes" do
172
176
  subject.save!
@@ -174,7 +178,7 @@ module MongoModel
174
178
  end
175
179
  end
176
180
  end
177
-
181
+
178
182
  context "when instantiated from database" do
179
183
  it "is not changed" do
180
184
  instance = TestDocument.find(subject.id)
@@ -7,9 +7,9 @@ module MongoModel
7
7
  property :datestamp, Date
8
8
  property :datetime, DateTime
9
9
  end
10
-
10
+
11
11
  subject { TestDocument.new }
12
-
12
+
13
13
  describe "multiparameter assignment from select" do
14
14
  context "setting a Time" do
15
15
  it "combines and assign parameters as Time" do
@@ -20,11 +20,11 @@ module MongoModel
20
20
  "timestamp(4i)" => "14",
21
21
  "timestamp(5i)" => "35"
22
22
  }
23
-
23
+
24
24
  subject.timestamp.should == Time.zone.local(2009, 10, 5, 14, 35)
25
25
  end
26
26
  end
27
-
27
+
28
28
  context "setting a Date" do
29
29
  it "combines and assign parameters as Date" do
30
30
  subject.attributes = {
@@ -32,11 +32,11 @@ module MongoModel
32
32
  "datestamp(2i)" => "4",
33
33
  "datestamp(3i)" => "9"
34
34
  }
35
-
35
+
36
36
  subject.datestamp.should == Date.new(2008, 4, 9)
37
37
  end
38
38
  end
39
-
39
+
40
40
  context "setting a DateTime" do
41
41
  it "combines and assign parameters as DateTime" do
42
42
  subject.attributes = {
@@ -46,7 +46,7 @@ module MongoModel
46
46
  "datetime(4i)" => "14",
47
47
  "datetime(5i)" => "35"
48
48
  }
49
-
49
+
50
50
  subject.datetime.should == DateTime.civil(2009, 10, 5, 14, 35)
51
51
  end
52
52
  end