mongomodel 0.5.5 → 0.5.6

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.
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