mongo_mapper 0.12.0 → 0.13.0.beta1

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 (154) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +35 -13
  3. data/bin/mmconsole +1 -1
  4. data/lib/mongo_mapper.rb +4 -0
  5. data/lib/mongo_mapper/connection.rb +17 -6
  6. data/lib/mongo_mapper/document.rb +1 -0
  7. data/lib/mongo_mapper/exceptions.rb +4 -1
  8. data/lib/mongo_mapper/extensions/binary.rb +1 -1
  9. data/lib/mongo_mapper/extensions/boolean.rb +20 -23
  10. data/lib/mongo_mapper/extensions/date.rb +3 -3
  11. data/lib/mongo_mapper/extensions/integer.rb +5 -1
  12. data/lib/mongo_mapper/extensions/kernel.rb +2 -0
  13. data/lib/mongo_mapper/extensions/ordered_hash.rb +23 -0
  14. data/lib/mongo_mapper/extensions/string.rb +2 -2
  15. data/lib/mongo_mapper/extensions/time.rb +7 -5
  16. data/lib/mongo_mapper/middleware/identity_map.rb +3 -4
  17. data/lib/mongo_mapper/plugins.rb +1 -1
  18. data/lib/mongo_mapper/plugins/associations.rb +11 -5
  19. data/lib/mongo_mapper/plugins/associations/base.rb +5 -3
  20. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +0 -0
  21. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +8 -8
  22. data/lib/mongo_mapper/plugins/associations/collection.rb +2 -0
  23. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +32 -7
  24. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +2 -2
  25. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +12 -12
  26. data/lib/mongo_mapper/plugins/associations/proxy.rb +5 -1
  27. data/lib/mongo_mapper/plugins/associations/single_association.rb +6 -6
  28. data/lib/mongo_mapper/plugins/clone.rb +4 -2
  29. data/lib/mongo_mapper/plugins/dirty.rb +22 -21
  30. data/lib/mongo_mapper/plugins/document.rb +4 -4
  31. data/lib/mongo_mapper/plugins/dumpable.rb +22 -0
  32. data/lib/mongo_mapper/plugins/embedded_callbacks.rb +58 -9
  33. data/lib/mongo_mapper/plugins/identity_map.rb +42 -32
  34. data/lib/mongo_mapper/plugins/keys.rb +133 -54
  35. data/lib/mongo_mapper/plugins/keys/key.rb +68 -22
  36. data/lib/mongo_mapper/plugins/modifiers.rb +26 -19
  37. data/lib/mongo_mapper/plugins/persistence.rb +15 -5
  38. data/lib/mongo_mapper/plugins/querying.rb +15 -40
  39. data/lib/mongo_mapper/plugins/querying/{decorator.rb → decorated_plucky_query.rb} +24 -4
  40. data/lib/mongo_mapper/plugins/rails.rb +22 -2
  41. data/lib/mongo_mapper/plugins/safe.rb +8 -5
  42. data/lib/mongo_mapper/plugins/sci.rb +26 -4
  43. data/lib/mongo_mapper/plugins/scopes.rb +5 -4
  44. data/lib/mongo_mapper/plugins/timestamps.rb +11 -4
  45. data/lib/mongo_mapper/plugins/validations.rb +1 -1
  46. data/lib/mongo_mapper/utils.rb +12 -0
  47. data/lib/mongo_mapper/version.rb +1 -1
  48. data/lib/rails/generators/mongo_mapper/config/config_generator.rb +20 -7
  49. data/lib/rails/generators/mongo_mapper/config/templates/mongo.yml +6 -0
  50. data/lib/rails/generators/mongo_mapper/model/model_generator.rb +18 -1
  51. data/lib/rails/generators/mongo_mapper/model/templates/model.rb +9 -5
  52. data/{test/functional/test_accessible.rb → spec/functional/accessible_spec.rb} +29 -29
  53. data/{test/functional/associations/test_belongs_to_polymorphic_proxy.rb → spec/functional/associations/belongs_to_polymorphic_proxy_spec.rb} +10 -10
  54. data/{test/functional/associations/test_belongs_to_proxy.rb → spec/functional/associations/belongs_to_proxy_spec.rb} +82 -64
  55. data/{test/functional/associations/test_in_array_proxy.rb → spec/functional/associations/in_array_proxy_spec.rb} +68 -68
  56. data/{test/functional/associations/test_many_documents_as_proxy.rb → spec/functional/associations/many_documents_as_proxy_spec.rb} +37 -38
  57. data/{test/functional/associations/test_many_documents_proxy.rb → spec/functional/associations/many_documents_proxy_spec.rb} +233 -146
  58. data/{test/functional/associations/test_many_embedded_polymorphic_proxy.rb → spec/functional/associations/many_embedded_polymorphic_proxy_spec.rb} +19 -20
  59. data/{test/functional/associations/test_many_embedded_proxy.rb → spec/functional/associations/many_embedded_proxy_spec.rb} +23 -24
  60. data/{test/functional/associations/test_many_polymorphic_proxy.rb → spec/functional/associations/many_polymorphic_proxy_spec.rb} +45 -46
  61. data/{test/functional/associations/test_one_as_proxy.rb → spec/functional/associations/one_as_proxy_spec.rb} +75 -77
  62. data/{test/functional/associations/test_one_embedded_polymorphic_proxy.rb → spec/functional/associations/one_embedded_polymorphic_proxy_spec.rb} +31 -32
  63. data/{test/functional/associations/test_one_embedded_proxy.rb → spec/functional/associations/one_embedded_proxy_spec.rb} +10 -10
  64. data/{test/functional/associations/test_one_proxy.rb → spec/functional/associations/one_proxy_spec.rb} +125 -102
  65. data/spec/functional/associations_spec.rb +48 -0
  66. data/{test/functional/test_binary.rb → spec/functional/binary_spec.rb} +6 -6
  67. data/spec/functional/caching_spec.rb +75 -0
  68. data/{test/functional/test_callbacks.rb → spec/functional/callbacks_spec.rb} +84 -26
  69. data/{test/functional/test_dirty.rb → spec/functional/dirty_spec.rb} +57 -42
  70. data/{test/functional/test_document.rb → spec/functional/document_spec.rb} +52 -52
  71. data/spec/functional/dumpable_spec.rb +24 -0
  72. data/{test/functional/test_dynamic_querying.rb → spec/functional/dynamic_querying_spec.rb} +14 -14
  73. data/{test/functional/test_embedded_document.rb → spec/functional/embedded_document_spec.rb} +51 -42
  74. data/{test/functional/test_equality.rb → spec/functional/equality_spec.rb} +4 -4
  75. data/spec/functional/extensions_spec.rb +16 -0
  76. data/{test/functional/test_identity_map.rb → spec/functional/identity_map_spec.rb} +73 -61
  77. data/spec/functional/indexes_spec.rb +48 -0
  78. data/spec/functional/keys_spec.rb +224 -0
  79. data/{test/functional/test_logger.rb → spec/functional/logger_spec.rb} +6 -6
  80. data/spec/functional/modifiers_spec.rb +550 -0
  81. data/spec/functional/pagination_spec.rb +89 -0
  82. data/spec/functional/protected_spec.rb +199 -0
  83. data/spec/functional/querying_spec.rb +1003 -0
  84. data/spec/functional/rails_spec.rb +55 -0
  85. data/spec/functional/safe_spec.rb +163 -0
  86. data/{test/functional/test_sci.rb → spec/functional/sci_spec.rb} +123 -34
  87. data/{test/functional/test_scopes.rb → spec/functional/scopes_spec.rb} +59 -26
  88. data/spec/functional/timestamps_spec.rb +97 -0
  89. data/{test/functional/test_touch.rb → spec/functional/touch_spec.rb} +13 -13
  90. data/spec/functional/userstamps_spec.rb +46 -0
  91. data/{test/functional/test_validations.rb → spec/functional/validations_spec.rb} +64 -64
  92. data/spec/spec_helper.rb +81 -0
  93. data/spec/support/matchers.rb +24 -0
  94. data/{test → spec/support}/models.rb +1 -6
  95. data/spec/unit/associations/base_spec.rb +146 -0
  96. data/spec/unit/associations/belongs_to_association_spec.rb +30 -0
  97. data/spec/unit/associations/many_association_spec.rb +64 -0
  98. data/spec/unit/associations/one_association_spec.rb +48 -0
  99. data/{test/unit/associations/test_proxy.rb → spec/unit/associations/proxy_spec.rb} +21 -21
  100. data/{test/unit/test_clone.rb → spec/unit/clone_spec.rb} +21 -11
  101. data/spec/unit/config_generator_spec.rb +24 -0
  102. data/{test/unit/test_document.rb → spec/unit/document_spec.rb} +42 -42
  103. data/{test/unit/test_dynamic_finder.rb → spec/unit/dynamic_finder_spec.rb} +28 -28
  104. data/{test/unit/test_embedded_document.rb → spec/unit/embedded_document_spec.rb} +102 -108
  105. data/{test/unit/test_equality.rb → spec/unit/equality_spec.rb} +7 -7
  106. data/{test/unit/test_exceptions.rb → spec/unit/exceptions_spec.rb} +3 -3
  107. data/{test/unit/test_extensions.rb → spec/unit/extensions_spec.rb} +85 -71
  108. data/spec/unit/identity_map_middleware_spec.rb +134 -0
  109. data/{test/unit/test_inspect.rb → spec/unit/inspect_spec.rb} +8 -8
  110. data/{test/unit/test_key.rb → spec/unit/key_spec.rb} +82 -52
  111. data/spec/unit/keys_spec.rb +155 -0
  112. data/spec/unit/model_generator_spec.rb +47 -0
  113. data/spec/unit/mongo_mapper_spec.rb +184 -0
  114. data/spec/unit/pagination_spec.rb +11 -0
  115. data/{test/unit/test_plugins.rb → spec/unit/plugins_spec.rb} +14 -14
  116. data/spec/unit/rails_compatibility_spec.rb +40 -0
  117. data/{test/unit/test_rails_reflect_on_association.rb → spec/unit/rails_reflect_on_association_spec.rb} +9 -9
  118. data/{test/unit/test_rails.rb → spec/unit/rails_spec.rb} +31 -31
  119. data/spec/unit/serialization_spec.rb +169 -0
  120. data/spec/unit/serializers/json_serializer_spec.rb +218 -0
  121. data/spec/unit/serializers/xml_serializer_spec.rb +198 -0
  122. data/{test/unit/test_time_zones.rb → spec/unit/time_zones_spec.rb} +8 -8
  123. data/{test/unit/test_translation.rb → spec/unit/translation_spec.rb} +6 -6
  124. data/{test/unit/test_validations.rb → spec/unit/validations_spec.rb} +72 -59
  125. metadata +199 -179
  126. data/test/_NOTE_ON_TESTING +0 -1
  127. data/test/functional/test_associations.rb +0 -46
  128. data/test/functional/test_caching.rb +0 -77
  129. data/test/functional/test_indexes.rb +0 -50
  130. data/test/functional/test_modifiers.rb +0 -537
  131. data/test/functional/test_pagination.rb +0 -91
  132. data/test/functional/test_protected.rb +0 -201
  133. data/test/functional/test_querying.rb +0 -935
  134. data/test/functional/test_safe.rb +0 -76
  135. data/test/functional/test_timestamps.rb +0 -62
  136. data/test/functional/test_userstamps.rb +0 -44
  137. data/test/support/railtie.rb +0 -4
  138. data/test/support/railtie/autoloaded.rb +0 -2
  139. data/test/support/railtie/not_autoloaded.rb +0 -3
  140. data/test/support/railtie/parent.rb +0 -3
  141. data/test/test_active_model_lint.rb +0 -18
  142. data/test/test_helper.rb +0 -93
  143. data/test/unit/associations/test_base.rb +0 -146
  144. data/test/unit/associations/test_belongs_to_association.rb +0 -29
  145. data/test/unit/associations/test_many_association.rb +0 -63
  146. data/test/unit/associations/test_one_association.rb +0 -47
  147. data/test/unit/serializers/test_json_serializer.rb +0 -216
  148. data/test/unit/serializers/test_xml_serializer.rb +0 -196
  149. data/test/unit/test_identity_map_middleware.rb +0 -132
  150. data/test/unit/test_keys.rb +0 -65
  151. data/test/unit/test_mongo_mapper.rb +0 -157
  152. data/test/unit/test_pagination.rb +0 -11
  153. data/test/unit/test_rails_compatibility.rb +0 -38
  154. data/test/unit/test_serialization.rb +0 -166
@@ -1,8 +1,8 @@
1
- require 'test_helper'
1
+ require 'spec_helper'
2
2
 
3
- class InArrayProxyTest < Test::Unit::TestCase
3
+ describe "InArrayProxy" do
4
4
  context "description" do
5
- setup do
5
+ before do
6
6
  class ::List
7
7
  include MongoMapper::Document
8
8
  key :name, String, :required => true
@@ -18,16 +18,16 @@ class InArrayProxyTest < Test::Unit::TestCase
18
18
  List.collection.remove
19
19
  end
20
20
 
21
- teardown do
21
+ after do
22
22
  Object.send :remove_const, 'List' if defined?(::List)
23
23
  Object.send :remove_const, 'User' if defined?(::User)
24
24
  end
25
25
 
26
- should "default reader to empty array" do
26
+ it "should default reader to empty array" do
27
27
  User.new.lists.should == []
28
28
  end
29
29
 
30
- should "allow adding to association like it was an array" do
30
+ it "should allow adding to association like it was an array" do
31
31
  user = User.new(:name => 'John')
32
32
  user.lists << List.new(:name => 'Foo1!')
33
33
  user.lists.push List.new(:name => 'Foo2!')
@@ -35,7 +35,7 @@ class InArrayProxyTest < Test::Unit::TestCase
35
35
  user.lists.size.should == 3
36
36
  end
37
37
 
38
- should "ignore adding duplicate ids" do
38
+ it "should ignore adding duplicate ids" do
39
39
  user = User.create(:name => 'John')
40
40
  list = List.create(:name => 'Foo')
41
41
  user.lists << list
@@ -46,7 +46,7 @@ class InArrayProxyTest < Test::Unit::TestCase
46
46
  user.lists.count.should == 1
47
47
  end
48
48
 
49
- should "be able to replace the association" do
49
+ it "should be able to replace the association" do
50
50
  user = User.new(:name => 'John')
51
51
  list = List.new(:name => 'Foo')
52
52
  user.lists = [list]
@@ -59,29 +59,29 @@ class InArrayProxyTest < Test::Unit::TestCase
59
59
  end
60
60
 
61
61
  context "create" do
62
- setup do
62
+ before do
63
63
  @user = User.create(:name => 'John')
64
64
  @list = @user.lists.create(:name => 'Foo!')
65
65
  end
66
66
 
67
- should "add id to key" do
67
+ it "should add id to key" do
68
68
  @user.list_ids.should include(@list.id)
69
69
  end
70
70
 
71
- should "persist id addition to key in database" do
71
+ it "should persist id addition to key in database" do
72
72
  @user.reload
73
73
  @user.list_ids.should include(@list.id)
74
74
  end
75
75
 
76
- should "add doc to association" do
76
+ it "should add doc to association" do
77
77
  @user.lists.should include(@list)
78
78
  end
79
79
 
80
- should "save doc" do
80
+ it "should save doc" do
81
81
  @list.should_not be_new
82
82
  end
83
83
 
84
- should "reset cache" do
84
+ it "should reset cache" do
85
85
  @user.lists.size.should == 1
86
86
  @user.lists.create(:name => 'Moo!')
87
87
  @user.lists.size.should == 2
@@ -89,35 +89,35 @@ class InArrayProxyTest < Test::Unit::TestCase
89
89
  end
90
90
 
91
91
  context "create!" do
92
- setup do
92
+ before do
93
93
  @user = User.create(:name => 'John')
94
94
  @list = @user.lists.create!(:name => 'Foo!')
95
95
  end
96
96
 
97
- should "add id to key" do
97
+ it "should add id to key" do
98
98
  @user.list_ids.should include(@list.id)
99
99
  end
100
100
 
101
- should "persist id addition to key in database" do
101
+ it "should persist id addition to key in database" do
102
102
  @user.reload
103
103
  @user.list_ids.should include(@list.id)
104
104
  end
105
105
 
106
- should "add doc to association" do
106
+ it "should add doc to association" do
107
107
  @user.lists.should include(@list)
108
108
  end
109
109
 
110
- should "save doc" do
110
+ it "should save doc" do
111
111
  @list.should_not be_new
112
112
  end
113
113
 
114
- should "raise exception if invalid" do
115
- assert_raises(MongoMapper::DocumentNotValid) do
114
+ it "should raise exception if invalid" do
115
+ expect {
116
116
  @user.lists.create!
117
- end
117
+ }.to raise_error(MongoMapper::DocumentNotValid)
118
118
  end
119
119
 
120
- should "reset cache" do
120
+ it "should reset cache" do
121
121
  @user.lists.size.should == 1
122
122
  @user.lists.create!(:name => 'Moo!')
123
123
  @user.lists.size.should == 2
@@ -125,7 +125,7 @@ class InArrayProxyTest < Test::Unit::TestCase
125
125
  end
126
126
 
127
127
  context "Finding scoped to association" do
128
- setup do
128
+ before do
129
129
  @user = User.create(:name => 'John')
130
130
  @user2 = User.create(:name => 'Brandon')
131
131
  @list1 = @user.lists.create!(:name => 'Foo 1', :position => 1)
@@ -134,135 +134,135 @@ class InArrayProxyTest < Test::Unit::TestCase
134
134
  end
135
135
 
136
136
  context "all" do
137
- should "work" do
137
+ it "should work" do
138
138
  @user.lists.all(:order => :position.asc).should == [@list1, @list2]
139
139
  end
140
140
 
141
- should "work with conditions" do
141
+ it "should work with conditions" do
142
142
  @user.lists.all(:name => 'Foo 1').should == [@list1]
143
143
  end
144
144
 
145
- should "not hit the database if ids key is empty" do
145
+ it "should not hit the database if ids key is empty" do
146
146
  @user.list_ids = []
147
- @user.lists.expects(:query).never
147
+ @user.lists.should_receive(:query).never
148
148
  @user.lists.all.should == []
149
149
  end
150
150
  end
151
151
 
152
152
  context "first" do
153
- should "work" do
153
+ it "should work" do
154
154
  @user.lists.first(:order => 'position').should == @list1
155
155
  end
156
156
 
157
- should "work with conditions" do
157
+ it "should work with conditions" do
158
158
  @user.lists.first(:position => 2).should == @list2
159
159
  end
160
160
 
161
- should "not hit the database if ids key is empty" do
161
+ it "should not hit the database if ids key is empty" do
162
162
  @user.list_ids = []
163
- @user.lists.expects(:query).never
163
+ @user.lists.should_receive(:query).never
164
164
  @user.lists.first.should be_nil
165
165
  end
166
166
  end
167
167
 
168
168
  context "last" do
169
- should "work" do
169
+ it "should work" do
170
170
  @user.lists.last(:order => 'position').should == @list2
171
171
  end
172
172
 
173
- should "work with conditions" do
173
+ it "should work with conditions" do
174
174
  @user.lists.last(:position => 2, :order => 'position').should == @list2
175
175
  end
176
176
 
177
- should "not hit the database if ids key is empty" do
177
+ it "should not hit the database if ids key is empty" do
178
178
  @user.list_ids = []
179
- @user.lists.expects(:query).never
179
+ @user.lists.should_receive(:query).never
180
180
  @user.lists.last.should be_nil
181
181
  end
182
182
  end
183
183
 
184
184
  context "with one id" do
185
- should "work for id in association" do
185
+ it "should work for id in association" do
186
186
  @user.lists.find(@list1.id).should == @list1
187
187
  end
188
188
 
189
- should "work with string ids" do
189
+ it "should work with string ids" do
190
190
  @user.lists.find(@list1.id.to_s).should == @list1
191
191
  end
192
192
 
193
- should "not work for id not in association" do
193
+ it "should not work for id not in association" do
194
194
  @user.lists.find(@list3.id).should be_nil
195
195
  end
196
196
 
197
- should "raise error when using ! and not found" do
198
- assert_raises MongoMapper::DocumentNotFound do
197
+ it "should raise error when using ! and not found" do
198
+ expect {
199
199
  @user.lists.find!(@list3.id)
200
- end
200
+ }.to raise_error(MongoMapper::DocumentNotFound)
201
201
  end
202
202
  end
203
203
 
204
204
  context "with multiple ids" do
205
- should "work for ids in association" do
205
+ it "should work for ids in association" do
206
206
  @user.lists.find(@list1.id, @list2.id).should == [@list1, @list2]
207
207
  end
208
208
 
209
- should "not work for ids not in association" do
209
+ it "should not work for ids not in association" do
210
210
  @user.lists.find(@list1.id, @list2.id, @list3.id).should == [@list1, @list2]
211
211
  end
212
212
  end
213
213
 
214
214
  context "with #paginate" do
215
- setup do
215
+ before do
216
216
  @lists = @user.lists.paginate(:per_page => 1, :page => 1, :order => 'position')
217
217
  end
218
218
 
219
- should "return total pages" do
219
+ it "should return total pages" do
220
220
  @lists.total_pages.should == 2
221
221
  end
222
222
 
223
- should "return total entries" do
223
+ it "should return total entries" do
224
224
  @lists.total_entries.should == 2
225
225
  end
226
226
 
227
- should "return the subject" do
227
+ it "should return the subject" do
228
228
  @lists.collect(&:name).should == ['Foo 1']
229
229
  end
230
230
 
231
- should "not hit the database if ids key is empty" do
231
+ it "should not hit the database if ids key is empty" do
232
232
  @user.list_ids = []
233
- @user.lists.expects(:query).never
233
+ @user.lists.should_receive(:query).never
234
234
  @user.lists.paginate(:page => 1).should == []
235
235
  end
236
236
  end
237
237
 
238
238
  context "dynamic finders" do
239
- should "work with single key" do
239
+ it "should work with single key" do
240
240
  @user.lists.find_by_name('Foo 1').should == @list1
241
241
  @user.lists.find_by_name!('Foo 1').should == @list1
242
242
  @user.lists.find_by_name('Foo 3').should be_nil
243
243
  end
244
244
 
245
- should "work with multiple keys" do
245
+ it "should work with multiple keys" do
246
246
  @user.lists.find_by_name_and_position('Foo 1', 1).should == @list1
247
247
  @user.lists.find_by_name_and_position!('Foo 1', 1).should == @list1
248
248
  @user.lists.find_by_name_and_position('Foo 3', 1).should be_nil
249
249
  end
250
250
 
251
- should "raise error when using ! and not found" do
252
- assert_raises(MongoMapper::DocumentNotFound) do
251
+ it "should raise error when using ! and not found" do
252
+ expect {
253
253
  @user.lists.find_by_name!('Foo 3')
254
- end
254
+ }.to raise_error(MongoMapper::DocumentNotFound)
255
255
  end
256
256
 
257
257
  context "find_or_create_by" do
258
- should "not create document if found" do
258
+ it "should not create document if found" do
259
259
  lambda {
260
260
  list = @user.lists.find_or_create_by_name('Foo 1')
261
261
  list.should == @list1
262
262
  }.should_not change { List.count }
263
263
  end
264
264
 
265
- should "create document if not found" do
265
+ it "should create document if not found" do
266
266
  lambda {
267
267
  list = @user.lists.find_or_create_by_name('Home')
268
268
  @user.lists.should include(list)
@@ -273,7 +273,7 @@ class InArrayProxyTest < Test::Unit::TestCase
273
273
  end
274
274
 
275
275
  context "count" do
276
- setup do
276
+ before do
277
277
  @user = User.create(:name => 'John')
278
278
  @user2 = User.create(:name => 'Brandon')
279
279
  @list1 = @user.lists.create!(:name => 'Foo 1')
@@ -281,25 +281,25 @@ class InArrayProxyTest < Test::Unit::TestCase
281
281
  @list3 = @user2.lists.create!(:name => 'Foo 3')
282
282
  end
283
283
 
284
- should "return number of ids" do
284
+ it "should return number of ids" do
285
285
  @user.lists.count.should == 2
286
286
  @user2.lists.count.should == 1
287
287
  end
288
288
 
289
- should "return correct count when given criteria" do
289
+ it "should return correct count when given criteria" do
290
290
  @user.lists.count(:name => 'Foo 1').should == 1
291
291
  @user2.lists.count(:name => 'Foo 1').should == 0
292
292
  end
293
293
 
294
- should "not hit the database if ids key is empty" do
294
+ it "should not hit the database if ids key is empty" do
295
295
  @user.list_ids = []
296
- @user.lists.expects(:query).never
296
+ @user.lists.should_receive(:query).never
297
297
  @user.lists.count(:name => 'Foo 1').should == 0
298
298
  end
299
299
  end
300
300
 
301
301
  context "Removing documents" do
302
- setup do
302
+ before do
303
303
  @user = User.create(:name => 'John')
304
304
  @user2 = User.create(:name => 'Brandon')
305
305
  @list1 = @user.lists.create!(:name => 'Foo 1', :position => 1)
@@ -308,13 +308,13 @@ class InArrayProxyTest < Test::Unit::TestCase
308
308
  end
309
309
 
310
310
  context "destroy_all" do
311
- should "work" do
311
+ it "should work" do
312
312
  @user.lists.count.should == 2
313
313
  @user.lists.destroy_all
314
314
  @user.lists.count.should == 0
315
315
  end
316
316
 
317
- should "work with conditions" do
317
+ it "should work with conditions" do
318
318
  @user.lists.count.should == 2
319
319
  @user.lists.destroy_all(:name => 'Foo 1')
320
320
  @user.lists.count.should == 1
@@ -322,20 +322,20 @@ class InArrayProxyTest < Test::Unit::TestCase
322
322
  end
323
323
 
324
324
  context "delete_all" do
325
- should "work" do
325
+ it "should work" do
326
326
  @user.lists.count.should == 2
327
327
  @user.lists.delete_all
328
328
  @user.lists.count.should == 0
329
329
  end
330
330
 
331
- should "work with conditions" do
331
+ it "should work with conditions" do
332
332
  @user.lists.count.should == 2
333
333
  @user.lists.delete_all(:name => 'Foo 1')
334
334
  @user.lists.count.should == 1
335
335
  end
336
336
  end
337
337
 
338
- should "work with nullify" do
338
+ it "should work with nullify" do
339
339
  @user.lists.count.should == 2
340
340
 
341
341
  lambda {
@@ -1,24 +1,23 @@
1
- require 'test_helper'
2
- require 'models'
1
+ require 'spec_helper'
3
2
 
4
- class ManyDocumentsAsProxyTest < Test::Unit::TestCase
5
- def setup
3
+ describe "ManyDocumentsAsProxy" do
4
+ before do
6
5
  Post.collection.remove
7
6
  PostComment.collection.remove
8
7
  end
9
8
 
10
- should "default reader to empty array" do
9
+ it "should default reader to empty array" do
11
10
  Post.new.comments.should == []
12
11
  end
13
12
 
14
- should "add type and id key to polymorphic class base" do
13
+ it "should add type and id key to polymorphic class base" do
15
14
  PostComment.keys.keys.should include('commentable_type')
16
15
  PostComment.keys['commentable_type'].type.should == String
17
16
  PostComment.keys.keys.should include('commentable_id')
18
17
  PostComment.keys['commentable_id'].type.should == ObjectId
19
18
  end
20
19
 
21
- should "allow adding to association like it was an array" do
20
+ it "should allow adding to association like it was an array" do
22
21
  post = Post.new
23
22
  post.comments << PostComment.new(:body => 'foo bar')
24
23
  post.comments << PostComment.new(:body => 'baz')
@@ -27,7 +26,7 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
27
26
  post.comments.size.should == 3
28
27
  end
29
28
 
30
- should "be able to replace the association" do
29
+ it "should be able to replace the association" do
31
30
  post = Post.new
32
31
 
33
32
  lambda {
@@ -47,19 +46,19 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
47
46
  end
48
47
 
49
48
  context "build" do
50
- should "assign foreign key" do
49
+ it "should assign foreign key" do
51
50
  post = Post.new
52
51
  comment = post.comments.build
53
52
  comment.commentable_id.should == post._id
54
53
  end
55
54
 
56
- should "assign _type" do
55
+ it "should assign _type" do
57
56
  post = Post.new
58
57
  comment = post.comments.build
59
58
  comment.commentable_type.should == "Post"
60
59
  end
61
60
 
62
- should "allow assigning attributes" do
61
+ it "should allow assigning attributes" do
63
62
  post = Post.new
64
63
  comment = post.comments.build(:body => 'foo bar')
65
64
  comment.body.should == 'foo bar'
@@ -67,26 +66,26 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
67
66
  end
68
67
 
69
68
  context "create" do
70
- should "assign foreign key" do
69
+ it "should assign foreign key" do
71
70
  post = Post.new
72
71
  comment = post.comments.create
73
72
  comment.commentable_id.should == post._id
74
73
  end
75
74
 
76
- should "assign _type" do
75
+ it "should assign _type" do
77
76
  post = Post.new
78
77
  comment = post.comments.create
79
78
  comment.commentable_type.should == "Post"
80
79
  end
81
80
 
82
- should "save record" do
81
+ it "should save record" do
83
82
  post = Post.new
84
83
  lambda {
85
84
  post.comments.create(:body => 'baz')
86
85
  }.should change { PostComment.count }
87
86
  end
88
87
 
89
- should "allow passing attributes" do
88
+ it "should allow passing attributes" do
90
89
  post = Post.create
91
90
  comment = post.comments.create(:body => 'foo bar')
92
91
  comment.body.should == 'foo bar'
@@ -94,7 +93,7 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
94
93
  end
95
94
 
96
95
  context "count" do
97
- should "work scoped to association" do
96
+ it "should work scoped to association" do
98
97
  post = Post.create
99
98
  3.times { post.comments.create(:body => 'foo bar') }
100
99
 
@@ -105,7 +104,7 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
105
104
  other_post.comments.count.should == 2
106
105
  end
107
106
 
108
- should "work with conditions" do
107
+ it "should work with conditions" do
109
108
  post = Post.create
110
109
  post.comments.create(:body => 'foo bar')
111
110
  post.comments.create(:body => 'baz')
@@ -116,7 +115,7 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
116
115
  end
117
116
 
118
117
  context "Finding scoped to association" do
119
- setup do
118
+ before do
120
119
  @post = Post.new
121
120
 
122
121
  @comment1 = PostComment.create(:body => 'comment1', :name => 'John')
@@ -134,66 +133,66 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
134
133
  end
135
134
 
136
135
  context "with #all" do
137
- should "work" do
136
+ it "should work" do
138
137
  @post.comments.all.should include(@comment1)
139
138
  @post.comments.all.should include(@comment2)
140
139
  end
141
140
 
142
- should "work with conditions" do
141
+ it "should work with conditions" do
143
142
  comments = @post.comments.all(:body => 'comment1')
144
143
  comments.should == [@comment1]
145
144
  end
146
145
 
147
- should "work with order" do
146
+ it "should work with order" do
148
147
  comments = @post.comments.all(:order => 'body desc')
149
148
  comments.should == [@comment2, @comment1]
150
149
  end
151
150
  end
152
151
 
153
152
  context "with one id" do
154
- should "work for id in association" do
153
+ it "should work for id in association" do
155
154
  @post.comments.find(@comment2._id).should == @comment2
156
155
  end
157
156
 
158
- should "not work for id not in association" do
159
- assert_raises(MongoMapper::DocumentNotFound) do
157
+ it "should not work for id not in association" do
158
+ expect {
160
159
  @post.comments.find!(@comment5._id)
161
- end
160
+ }.to raise_error(MongoMapper::DocumentNotFound)
162
161
  end
163
162
  end
164
163
 
165
164
  context "with multiple ids" do
166
- should "work for ids in association" do
165
+ it "should work for ids in association" do
167
166
  posts = @post.comments.find!(@comment1._id, @comment2._id)
168
167
  posts.should == [@comment1, @comment2]
169
168
  end
170
169
 
171
- should "not work for ids not in association" do
172
- assert_raises(MongoMapper::DocumentNotFound) do
170
+ it "should not work for ids not in association" do
171
+ expect {
173
172
  @post.comments.find!(@comment1._id, @comment2._id, @comment4._id)
174
- end
173
+ }.to raise_error(MongoMapper::DocumentNotFound)
175
174
  end
176
175
  end
177
176
 
178
177
  context "dynamic finders" do
179
- should "work with single key" do
178
+ it "should work with single key" do
180
179
  @post.comments.find_by_body('comment1').should == @comment1
181
180
  @post2.comments.find_by_body('comment1').should == @comment4
182
181
  end
183
182
 
184
- should "work with multiple keys" do
183
+ it "should work with multiple keys" do
185
184
  @post.comments.find_by_body_and_name('comment1', 'John').should == @comment1
186
185
  @post.comments.find_by_body_and_name('comment1', 'Frank').should be_nil
187
186
  end
188
187
 
189
- should "raise error when using !" do
188
+ it "should raise error when using !" do
190
189
  lambda {
191
190
  @post.comments.find_by_body!('asdf')
192
191
  }.should raise_error(MongoMapper::DocumentNotFound)
193
192
  end
194
193
 
195
194
  context "find_or_create_by" do
196
- should "not create document if found" do
195
+ it "should not create document if found" do
197
196
  lambda {
198
197
  comment = @post.comments.find_or_create_by_name('Steve')
199
198
  comment.commentable.should == @post
@@ -201,7 +200,7 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
201
200
  }.should_not change { PostComment.count }
202
201
  end
203
202
 
204
- should "create document if not found" do
203
+ it "should create document if not found" do
205
204
  lambda {
206
205
  @post.comments.find_or_create_by_name('Chas')
207
206
  }.should change { PostComment.count }.by(1)
@@ -210,19 +209,19 @@ class ManyDocumentsAsProxyTest < Test::Unit::TestCase
210
209
  end
211
210
 
212
211
  context "with #paginate" do
213
- setup do
212
+ before do
214
213
  @comments = @post2.comments.paginate(:per_page => 2, :page => 1, :order => 'name')
215
214
  end
216
215
 
217
- should "return total pages" do
216
+ it "should return total pages" do
218
217
  @comments.total_pages.should == 2
219
218
  end
220
219
 
221
- should "return total entries" do
220
+ it "should return total entries" do
222
221
  @comments.total_entries.should == 3
223
222
  end
224
223
 
225
- should "return the subject" do
224
+ it "should return the subject" do
226
225
  @comments.should include(@comment4)
227
226
  @comments.should include(@comment5)
228
227
  end