mongo_mapper_ign 0.7.4 → 0.7.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 (102) hide show
  1. data/README.rdoc +1 -1
  2. data/lib/mongo_mapper.rb +5 -8
  3. data/lib/mongo_mapper/document.rb +24 -53
  4. data/lib/mongo_mapper/embedded_document.rb +1 -0
  5. data/lib/mongo_mapper/plugins.rb +1 -0
  6. data/lib/mongo_mapper/plugins/associations.rb +2 -1
  7. data/lib/mongo_mapper/plugins/associations/base.rb +5 -4
  8. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +2 -1
  9. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +2 -1
  10. data/lib/mongo_mapper/plugins/associations/collection.rb +1 -0
  11. data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +1 -0
  12. data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +1 -0
  13. data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +1 -0
  14. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +2 -1
  15. data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +1 -0
  16. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +1 -0
  17. data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +1 -0
  18. data/lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb +1 -0
  19. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +2 -1
  20. data/lib/mongo_mapper/plugins/associations/proxy.rb +1 -0
  21. data/lib/mongo_mapper/plugins/callbacks.rb +1 -0
  22. data/lib/mongo_mapper/plugins/clone.rb +1 -0
  23. data/lib/mongo_mapper/plugins/descendants.rb +1 -0
  24. data/lib/mongo_mapper/plugins/dirty.rb +1 -0
  25. data/lib/mongo_mapper/plugins/equality.rb +4 -3
  26. data/lib/mongo_mapper/plugins/identity_map.rb +9 -7
  27. data/lib/mongo_mapper/plugins/inspect.rb +1 -0
  28. data/lib/mongo_mapper/plugins/keys.rb +50 -73
  29. data/lib/mongo_mapper/plugins/keys/key.rb +54 -0
  30. data/lib/mongo_mapper/plugins/logger.rb +1 -0
  31. data/lib/mongo_mapper/plugins/modifiers.rb +10 -5
  32. data/lib/mongo_mapper/plugins/pagination.rb +1 -0
  33. data/lib/mongo_mapper/plugins/pagination/proxy.rb +4 -3
  34. data/lib/mongo_mapper/plugins/persistence.rb +1 -0
  35. data/lib/mongo_mapper/plugins/protected.rb +1 -0
  36. data/lib/mongo_mapper/plugins/rails.rb +1 -0
  37. data/lib/mongo_mapper/plugins/serialization.rb +4 -3
  38. data/lib/mongo_mapper/plugins/timestamps.rb +2 -1
  39. data/lib/mongo_mapper/plugins/userstamps.rb +1 -0
  40. data/lib/mongo_mapper/plugins/validations.rb +3 -2
  41. data/lib/mongo_mapper/query.rb +10 -129
  42. data/lib/mongo_mapper/support.rb +18 -39
  43. data/lib/mongo_mapper/support/descendant_appends.rb +1 -0
  44. data/lib/mongo_mapper/support/find.rb +1 -0
  45. data/lib/mongo_mapper/version.rb +2 -1
  46. metadata +32 -134
  47. data/.gitignore +0 -10
  48. data/Rakefile +0 -37
  49. data/mongo_mapper.gemspec +0 -214
  50. data/mongo_mapper_ign.gemspec +0 -217
  51. data/performance/read_write.rb +0 -52
  52. data/specs.watchr +0 -51
  53. data/test/NOTE_ON_TESTING +0 -1
  54. data/test/active_model_lint_test.rb +0 -13
  55. data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +0 -63
  56. data/test/functional/associations/test_belongs_to_proxy.rb +0 -101
  57. data/test/functional/associations/test_in_array_proxy.rb +0 -325
  58. data/test/functional/associations/test_many_documents_as_proxy.rb +0 -229
  59. data/test/functional/associations/test_many_documents_proxy.rb +0 -536
  60. data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +0 -176
  61. data/test/functional/associations/test_many_embedded_proxy.rb +0 -256
  62. data/test/functional/associations/test_many_polymorphic_proxy.rb +0 -302
  63. data/test/functional/associations/test_one_embedded_proxy.rb +0 -68
  64. data/test/functional/associations/test_one_proxy.rb +0 -196
  65. data/test/functional/test_associations.rb +0 -44
  66. data/test/functional/test_binary.rb +0 -27
  67. data/test/functional/test_callbacks.rb +0 -151
  68. data/test/functional/test_dirty.rb +0 -163
  69. data/test/functional/test_document.rb +0 -1219
  70. data/test/functional/test_embedded_document.rb +0 -210
  71. data/test/functional/test_identity_map.rb +0 -507
  72. data/test/functional/test_indexing.rb +0 -44
  73. data/test/functional/test_logger.rb +0 -20
  74. data/test/functional/test_modifiers.rb +0 -394
  75. data/test/functional/test_pagination.rb +0 -93
  76. data/test/functional/test_protected.rb +0 -163
  77. data/test/functional/test_string_id_compatibility.rb +0 -67
  78. data/test/functional/test_timestamps.rb +0 -64
  79. data/test/functional/test_userstamps.rb +0 -28
  80. data/test/functional/test_validations.rb +0 -342
  81. data/test/models.rb +0 -227
  82. data/test/support/custom_matchers.rb +0 -37
  83. data/test/support/timing.rb +0 -16
  84. data/test/test_helper.rb +0 -64
  85. data/test/unit/associations/test_base.rb +0 -212
  86. data/test/unit/associations/test_proxy.rb +0 -105
  87. data/test/unit/serializers/test_json_serializer.rb +0 -202
  88. data/test/unit/test_descendant_appends.rb +0 -71
  89. data/test/unit/test_document.rb +0 -225
  90. data/test/unit/test_dynamic_finder.rb +0 -123
  91. data/test/unit/test_embedded_document.rb +0 -657
  92. data/test/unit/test_keys.rb +0 -185
  93. data/test/unit/test_mongo_mapper.rb +0 -118
  94. data/test/unit/test_pagination.rb +0 -160
  95. data/test/unit/test_plugins.rb +0 -50
  96. data/test/unit/test_query.rb +0 -374
  97. data/test/unit/test_rails.rb +0 -181
  98. data/test/unit/test_rails_compatibility.rb +0 -52
  99. data/test/unit/test_serialization.rb +0 -51
  100. data/test/unit/test_support.rb +0 -382
  101. data/test/unit/test_time_zones.rb +0 -39
  102. data/test/unit/test_validations.rb +0 -544
@@ -1,52 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestRailsCompatibility < Test::Unit::TestCase
4
- class BigStuff
5
- include MongoMapper::Document
6
- end
7
-
8
- class Item
9
- include MongoMapper::EmbeddedDocument
10
- key :for_all, String
11
- end
12
-
13
- class FirstItem < Item
14
- key :first_only, String
15
- many :second_items
16
- end
17
-
18
- class SecondItem < Item
19
- key :second_only, String
20
- end
21
-
22
- context "EmbeddedDocument" do
23
- should "alias many to has_many" do
24
- FirstItem.should respond_to(:has_many)
25
- end
26
-
27
- should "alias one to has_one" do
28
- FirstItem.should respond_to(:has_one)
29
- end
30
-
31
- should "have column names" do
32
- Item.column_names.sort.should == ['_id', '_type', 'for_all']
33
- FirstItem.column_names.sort.should == ['_id', '_type', 'first_only', 'for_all']
34
- SecondItem.column_names.sort.should == ['_id', '_type', 'for_all', 'second_only']
35
- end
36
-
37
- should "alias new to new_record?" do
38
- instance = Item.new
39
- instance.new_record?.should == instance.new?
40
- end
41
-
42
- should "implement human_name" do
43
- Item.human_name.should == 'Item'
44
- end
45
- end
46
-
47
- context "Document" do
48
- should "implement human_name" do
49
- BigStuff.human_name.should == 'Big Stuff'
50
- end
51
- end
52
- end
@@ -1,51 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SerializationTest < Test::Unit::TestCase
4
- def setup
5
- @document = EDoc do
6
- key :name, String
7
- key :age, Integer
8
- key :awesome, Boolean
9
- key :preferences, Hash
10
- key :created_at, Time
11
- end
12
-
13
- @instance = @document.new(
14
- :name => 'John Doe',
15
- :age => 25,
16
- :awesome => true,
17
- :preferences => {:language => 'Ruby'},
18
- :created_at => Time.now.change(:usec => 0)
19
- )
20
- end
21
-
22
- [:json].each do |format|
23
- context format do
24
- should "be reversable" do
25
- serialized = @instance.send("to_#{format}")
26
- unserialized = @document.send("from_#{format}", serialized)
27
-
28
- assert_equal @instance, unserialized
29
- end
30
-
31
- should "allow attribute only filtering" do
32
- serialized = @instance.send("to_#{format}", :only => [ :age, :name ])
33
- unserialized = @document.send("from_#{format}", serialized)
34
-
35
- assert_equal @instance.name, unserialized.name
36
- assert_equal @instance.age, unserialized.age
37
- assert ! unserialized.awesome
38
- assert_nil unserialized.created_at
39
- end
40
-
41
- should "allow attribute except filtering" do
42
- serialized = @instance.send("to_#{format}", :except => [ :age, :name ])
43
- unserialized = @document.send("from_#{format}", serialized)
44
-
45
- assert_nil unserialized.name
46
- assert_nil unserialized.age
47
- assert_equal @instance.awesome, unserialized.awesome
48
- end
49
- end
50
- end
51
- end
@@ -1,382 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SupportTest < Test::Unit::TestCase
4
- context "Array#to_mongo" do
5
- should "convert value to_a" do
6
- Array.to_mongo([1, 2, 3, 4]).should == [1, 2, 3, 4]
7
- Array.to_mongo('1').should == ['1']
8
- Array.to_mongo({'1' => '2', '3' => '4'}).should == [['1', '2'], ['3', '4']]
9
- end
10
- end
11
-
12
- context "Array#from_mongo" do
13
- should "be array if array" do
14
- Array.from_mongo([1, 2]).should == [1, 2]
15
- end
16
-
17
- should "be empty array if nil" do
18
- Array.from_mongo(nil).should == []
19
- end
20
- end
21
-
22
- context "Binary#to_mongo" do
23
- should "convert to byte buffer if not byte buffer" do
24
- Binary.to_mongo('asdfsadasdfs').is_a?(BSON::ByteBuffer).should be_true
25
- end
26
-
27
- should "be byte buffer if byte buffer" do
28
- Binary.to_mongo(BSON::ByteBuffer.new('asdfsadasdfs')).is_a?(BSON::ByteBuffer).should be_true
29
- end
30
-
31
- should "be nil if nil" do
32
- Binary.to_mongo(nil).should be_nil
33
- end
34
- end
35
-
36
- context "Binary#from_mongo" do
37
- should "return value" do
38
- buffer = BSON::ByteBuffer.new('asdfasdfasdf')
39
- Binary.from_mongo(buffer).to_s.should == buffer.to_s
40
- end
41
- end
42
-
43
- context "Boolean#to_mongo" do
44
- should "be true for true" do
45
- Boolean.to_mongo(true).should be_true
46
- end
47
-
48
- should "be false for false" do
49
- Boolean.to_mongo(false).should be_false
50
- end
51
-
52
- should "handle odd assortment of other values" do
53
- Boolean.to_mongo('true').should be_true
54
- Boolean.to_mongo('t').should be_true
55
- Boolean.to_mongo('1').should be_true
56
- Boolean.to_mongo(1).should be_true
57
-
58
- Boolean.to_mongo('false').should be_false
59
- Boolean.to_mongo('f').should be_false
60
- Boolean.to_mongo('0').should be_false
61
- Boolean.to_mongo(0).should be_false
62
- end
63
-
64
- should "be nil for nil" do
65
- Boolean.to_mongo(nil).should be_nil
66
- end
67
- end
68
-
69
- context "Boolean#from_mongo" do
70
- should "be true for true" do
71
- Boolean.from_mongo(true).should be_true
72
- end
73
-
74
- should "be false for false" do
75
- Boolean.from_mongo(false).should be_false
76
- end
77
-
78
- should "be nil for nil" do
79
- Boolean.to_mongo(nil).should be_nil
80
- end
81
- end
82
-
83
- context "Date#to_mongo" do
84
- should "be time if string" do
85
- date = Date.to_mongo('2009-10-01')
86
- date.should == Time.utc(2009, 10, 1)
87
- date.should == date
88
- date.month.should == 10
89
- date.day.should == 1
90
- date.year.should == 2009
91
- end
92
-
93
- should "be time if date" do
94
- Date.to_mongo(Date.new(2009, 10, 1)).should == Time.utc(2009, 10, 1)
95
- end
96
-
97
- should "be date if time" do
98
- Date.to_mongo(Time.parse("2009-10-1T12:30:00")).should == Time.utc(2009, 10, 1)
99
- end
100
-
101
- should "be nil if bogus string" do
102
- Date.to_mongo('jdsafop874').should be_nil
103
- end
104
-
105
- should "be nil if empty string" do
106
- Date.to_mongo('').should be_nil
107
- end
108
- end
109
-
110
- context "Date#from_mongo" do
111
- should "be date if date" do
112
- date = Date.new(2009, 10, 1)
113
- from_date = Date.from_mongo(date)
114
- from_date.should == date
115
- from_date.month.should == 10
116
- from_date.day.should == 1
117
- from_date.year.should == 2009
118
- end
119
-
120
- should "be date if time" do
121
- time = Time.now
122
- Date.from_mongo(time).should == time.to_date
123
- end
124
-
125
- should "be nil if nil" do
126
- Date.from_mongo(nil).should be_nil
127
- end
128
- end
129
-
130
- context "Float#to_mongo" do
131
- should "convert value to_f" do
132
- [21, 21.0, '21'].each do |value|
133
- Float.to_mongo(value).should == 21.0
134
- end
135
- end
136
- end
137
-
138
- context "Hash#from_mongo" do
139
- should "convert hash to hash with indifferent access" do
140
- hash = Hash.from_mongo(:foo => 'bar')
141
- hash[:foo].should == 'bar'
142
- hash['foo'].should == 'bar'
143
- end
144
-
145
- should "be hash if nil" do
146
- hash = Hash.from_mongo(nil)
147
- hash.should == {}
148
- hash.is_a?(HashWithIndifferentAccess).should be_true
149
- end
150
- end
151
-
152
- context "Hash#to_mongo instance method" do
153
- should "have instance method that returns self" do
154
- hash = HashWithIndifferentAccess.new('foo' => 'bar')
155
- hash.to_mongo.should == {'foo' => 'bar'}
156
- end
157
- end
158
-
159
- context "Integer#to_mongo" do
160
- should "convert value to integer" do
161
- [21, 21.0, '21'].each do |value|
162
- Integer.to_mongo(value).should == 21
163
- end
164
- end
165
-
166
- should "work fine with big integers" do
167
- [9223372036854775807, '9223372036854775807'].each do |value|
168
- Integer.to_mongo(value).should == 9223372036854775807
169
- end
170
- end
171
- end
172
-
173
- context "ObjectId#to_mongo" do
174
- should "return nil for nil" do
175
- ObjectId.to_mongo(nil).should be_nil
176
- end
177
-
178
- should "return nil if blank string" do
179
- ObjectId.to_mongo('').should be_nil
180
- end
181
-
182
- should "return value if object id" do
183
- id = BSON::ObjectID.new
184
- ObjectId.to_mongo(id).should be(id)
185
- end
186
-
187
- should "return object id if string" do
188
- id = BSON::ObjectID.new
189
- ObjectId.to_mongo(id.to_s).should be(id)
190
- end
191
- end
192
-
193
- context "ObjectId#from_mongo" do
194
- should "return value" do
195
- id = BSON::ObjectID.new
196
- ObjectId.from_mongo(id).should == id
197
- end
198
- end
199
-
200
- context "NilClass#to_mongo" do
201
- should "return nil" do
202
- nil.to_mongo(nil).should be_nil
203
- end
204
- end
205
-
206
- context "NilClass#from_mongo" do
207
- should "return nil" do
208
- nil.from_mongo(nil).should be_nil
209
- end
210
- end
211
-
212
- context "Object#to_mongo" do
213
- should "return value" do
214
- Object.to_mongo(21).should == 21
215
- Object.to_mongo('21').should == '21'
216
- Object.to_mongo(9223372036854775807).should == 9223372036854775807
217
- end
218
- end
219
-
220
- context "Object#from_mongo" do
221
- should "return value" do
222
- Object.from_mongo(21).should == 21
223
- Object.from_mongo('21').should == '21'
224
- Object.from_mongo(9223372036854775807).should == 9223372036854775807
225
- end
226
- end
227
-
228
- context "Set#to_mongo" do
229
- should "convert value to_a" do
230
- Set.to_mongo(Set.new([1,2,3])).should == [1,2,3]
231
- end
232
-
233
- should "convert to empty array if nil" do
234
- Set.to_mongo(nil).should == []
235
- end
236
- end
237
-
238
- context "Set#from_mongo" do
239
- should "be a set if array" do
240
- Set.from_mongo([1,2,3]).should == Set.new([1,2,3])
241
- end
242
-
243
- should "be empty set if nil" do
244
- Set.from_mongo(nil).should == Set.new([])
245
- end
246
- end
247
-
248
- context "String#to_mongo" do
249
- should "convert value to_s" do
250
- [21, '21'].each do |value|
251
- String.to_mongo(value).should == '21'
252
- end
253
- end
254
-
255
- should "be nil if nil" do
256
- String.to_mongo(nil).should be_nil
257
- end
258
- end
259
-
260
- context "String#from_mongo" do
261
- should "be string if value present" do
262
- String.from_mongo('Scotch! Scotch! Scotch!').should == 'Scotch! Scotch! Scotch!'
263
- end
264
-
265
- should "return nil if nil" do
266
- String.from_mongo(nil).should be_nil
267
- end
268
-
269
- should "return empty string if blank" do
270
- String.from_mongo('').should == ''
271
- end
272
- end
273
-
274
- context "Symbol" do
275
- %w(gt lt gte lte ne in nin mod all size where exists asc desc).each do |operator|
276
- should "have $#{operator} operator" do
277
- :foo.respond_to?(operator)
278
- end
279
- end
280
- end
281
-
282
- context "Time#to_mongo without Time.zone" do
283
- setup do
284
- Time.zone = nil
285
- end
286
-
287
- should "be time to milliseconds if string" do
288
- Time.to_mongo('2000-01-01 01:01:01.123456').to_f.should == Time.local(2000, 1, 1, 1, 1, 1, 123000).utc.to_f
289
- end
290
-
291
- should "be time in utc if time" do
292
- Time.to_mongo(Time.local(2009, 8, 15, 0, 0, 0)).zone.should == 'UTC'
293
- end
294
-
295
- should "be nil if blank string" do
296
- Time.to_mongo('').should be_nil
297
- end
298
-
299
- should "not be nil if nil" do
300
- Time.to_mongo(nil).should be_nil
301
- end
302
- end
303
-
304
- context "Time#to_mongo with Time.zone" do
305
- should "be time to milliseconds if time" do
306
- Time.zone = 'Hawaii'
307
- Time.to_mongo(Time.zone.local(2009, 8, 15, 14, 0, 0, 123456)).to_f.should == Time.utc(2009, 8, 16, 0, 0, 0, 123000).to_f
308
- Time.zone = nil
309
- end
310
-
311
- should "be time to milliseconds if string" do
312
- Time.zone = 'Hawaii'
313
- Time.to_mongo('2009-08-15 14:00:00.123456').to_f.should == Time.utc(2009, 8, 16, 0, 0, 0, 123000).to_f
314
- Time.zone = nil
315
- end
316
-
317
- should "be nil if blank string" do
318
- Time.zone = 'Hawaii'
319
- Time.to_mongo('').should be_nil
320
- Time.zone = nil
321
- end
322
-
323
- should "be nil if nil" do
324
- Time.zone = 'Hawaii'
325
- Time.to_mongo(nil).should be_nil
326
- Time.zone = nil
327
- end
328
- end
329
-
330
- context "Time#from_mongo without Time.zone" do
331
- should "be time" do
332
- time = Time.now
333
- Time.from_mongo(time).should == time
334
- end
335
-
336
- should "be nil if nil" do
337
- Time.from_mongo(nil).should be_nil
338
- end
339
- end
340
-
341
- context "Time#from_mongo with Time.zone" do
342
- should "be time in Time.zone" do
343
- Time.zone = 'Hawaii'
344
-
345
- time = Time.from_mongo(Time.utc(2009, 10, 1))
346
- time.should == Time.zone.local(2009, 9, 30, 14)
347
- time.is_a?(ActiveSupport::TimeWithZone).should be_true
348
-
349
- Time.zone = nil
350
- end
351
-
352
- should "be nil if nil" do
353
- Time.zone = 'Hawaii'
354
- Time.from_mongo(nil).should be_nil
355
- Time.zone = nil
356
- end
357
- end
358
-
359
- context "BSON::ObjectID" do
360
- context "#as_json" do
361
- should "convert object id to string" do
362
- id = BSON::ObjectID.new
363
- id.as_json.should == id.to_s
364
- end
365
- end
366
- context "#to_json" do
367
- should "convert object id to string" do
368
- id = BSON::ObjectID.new
369
- id.to_json.should == %Q("#{id}")
370
- end
371
-
372
- should "support ruby driver syntax also" do
373
- id = BSON::ObjectID.new
374
- id.original_to_json.should == %Q({"$oid": "#{id}"})
375
- end
376
- end
377
- end
378
-
379
- context "BSON::ObjectID.to_json" do
380
-
381
- end
382
- end