mongo_mapper-unstable 2010.3.8 → 2010.06.23

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 (143) hide show
  1. data/README.rdoc +4 -8
  2. data/bin/mmconsole +1 -1
  3. data/examples/keys.rb +37 -0
  4. data/examples/plugins.rb +41 -0
  5. data/examples/querying.rb +35 -0
  6. data/examples/scopes.rb +52 -0
  7. data/lib/mongo_mapper/connection.rb +83 -0
  8. data/lib/mongo_mapper/document.rb +11 -329
  9. data/lib/mongo_mapper/embedded_document.rb +9 -38
  10. data/lib/mongo_mapper/exceptions.rb +30 -0
  11. data/lib/mongo_mapper/extensions/array.rb +19 -0
  12. data/lib/mongo_mapper/extensions/binary.rb +22 -0
  13. data/lib/mongo_mapper/extensions/boolean.rb +44 -0
  14. data/lib/mongo_mapper/extensions/date.rb +25 -0
  15. data/lib/mongo_mapper/extensions/float.rb +14 -0
  16. data/lib/mongo_mapper/extensions/hash.rb +14 -0
  17. data/lib/mongo_mapper/extensions/integer.rb +19 -0
  18. data/lib/mongo_mapper/extensions/kernel.rb +9 -0
  19. data/lib/mongo_mapper/extensions/nil_class.rb +18 -0
  20. data/lib/mongo_mapper/extensions/object.rb +27 -0
  21. data/lib/mongo_mapper/extensions/object_id.rb +30 -0
  22. data/lib/mongo_mapper/extensions/set.rb +20 -0
  23. data/lib/mongo_mapper/extensions/string.rb +18 -0
  24. data/lib/mongo_mapper/extensions/time.rb +29 -0
  25. data/lib/mongo_mapper/plugins/accessible.rb +44 -0
  26. data/lib/mongo_mapper/plugins/associations/base.rb +7 -6
  27. data/lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb +5 -6
  28. data/lib/mongo_mapper/plugins/associations/belongs_to_proxy.rb +5 -6
  29. data/lib/mongo_mapper/plugins/associations/collection.rb +1 -0
  30. data/lib/mongo_mapper/plugins/associations/embedded_collection.rb +2 -1
  31. data/lib/mongo_mapper/plugins/associations/in_array_proxy.rb +25 -39
  32. data/lib/mongo_mapper/plugins/associations/many_documents_as_proxy.rb +4 -4
  33. data/lib/mongo_mapper/plugins/associations/many_documents_proxy.rb +36 -46
  34. data/lib/mongo_mapper/plugins/associations/many_embedded_polymorphic_proxy.rb +1 -0
  35. data/lib/mongo_mapper/plugins/associations/many_embedded_proxy.rb +5 -4
  36. data/lib/mongo_mapper/plugins/associations/many_polymorphic_proxy.rb +1 -0
  37. data/lib/mongo_mapper/plugins/associations/one_embedded_proxy.rb +40 -0
  38. data/lib/mongo_mapper/plugins/associations/one_proxy.rb +7 -7
  39. data/lib/mongo_mapper/plugins/associations/proxy.rb +16 -8
  40. data/lib/mongo_mapper/plugins/associations.rb +14 -22
  41. data/lib/mongo_mapper/plugins/caching.rb +21 -0
  42. data/lib/mongo_mapper/plugins/callbacks.rb +17 -5
  43. data/lib/mongo_mapper/plugins/clone.rb +10 -4
  44. data/lib/mongo_mapper/plugins/descendants.rb +3 -2
  45. data/lib/mongo_mapper/plugins/dirty.rb +1 -0
  46. data/lib/mongo_mapper/plugins/document.rb +41 -0
  47. data/lib/mongo_mapper/{support/find.rb → plugins/dynamic_querying/dynamic_finder.rb} +3 -36
  48. data/lib/mongo_mapper/plugins/dynamic_querying.rb +43 -0
  49. data/lib/mongo_mapper/plugins/embedded_document.rb +49 -0
  50. data/lib/mongo_mapper/plugins/equality.rb +4 -10
  51. data/lib/mongo_mapper/plugins/identity_map.rb +29 -23
  52. data/lib/mongo_mapper/plugins/indexes.rb +12 -0
  53. data/lib/mongo_mapper/plugins/inspect.rb +1 -0
  54. data/lib/mongo_mapper/plugins/keys/key.rb +55 -0
  55. data/lib/mongo_mapper/plugins/keys.rb +85 -110
  56. data/lib/mongo_mapper/plugins/logger.rb +1 -0
  57. data/lib/mongo_mapper/plugins/modifiers.rb +41 -16
  58. data/lib/mongo_mapper/plugins/pagination.rb +5 -15
  59. data/lib/mongo_mapper/plugins/persistence.rb +69 -0
  60. data/lib/mongo_mapper/plugins/protected.rb +9 -1
  61. data/lib/mongo_mapper/plugins/querying/decorator.rb +46 -0
  62. data/lib/mongo_mapper/plugins/querying/plucky_methods.rb +15 -0
  63. data/lib/mongo_mapper/plugins/querying.rb +176 -0
  64. data/lib/mongo_mapper/plugins/rails.rb +6 -1
  65. data/lib/mongo_mapper/plugins/safe.rb +28 -0
  66. data/lib/mongo_mapper/plugins/sci.rb +32 -0
  67. data/lib/mongo_mapper/plugins/scopes.rb +21 -0
  68. data/lib/mongo_mapper/plugins/serialization.rb +5 -4
  69. data/lib/mongo_mapper/plugins/timestamps.rb +2 -1
  70. data/lib/mongo_mapper/plugins/userstamps.rb +1 -0
  71. data/lib/mongo_mapper/plugins/validations.rb +9 -5
  72. data/lib/mongo_mapper/plugins.rb +1 -20
  73. data/lib/mongo_mapper/support/descendant_appends.rb +5 -6
  74. data/lib/mongo_mapper/version.rb +4 -0
  75. data/lib/mongo_mapper.rb +71 -128
  76. data/test/{NOTE_ON_TESTING → _NOTE_ON_TESTING} +0 -0
  77. data/test/functional/associations/test_belongs_to_polymorphic_proxy.rb +5 -5
  78. data/test/functional/associations/test_belongs_to_proxy.rb +13 -21
  79. data/test/functional/associations/test_in_array_proxy.rb +7 -9
  80. data/test/functional/associations/test_many_documents_as_proxy.rb +5 -5
  81. data/test/functional/associations/test_many_documents_proxy.rb +186 -64
  82. data/test/functional/associations/test_many_embedded_polymorphic_proxy.rb +22 -22
  83. data/test/functional/associations/test_many_embedded_proxy.rb +32 -32
  84. data/test/functional/associations/test_many_polymorphic_proxy.rb +47 -47
  85. data/test/functional/associations/test_one_embedded_proxy.rb +67 -0
  86. data/test/functional/associations/test_one_proxy.rb +70 -49
  87. data/test/functional/test_accessible.rb +168 -0
  88. data/test/functional/test_associations.rb +11 -11
  89. data/test/functional/test_binary.rb +5 -5
  90. data/test/functional/test_caching.rb +76 -0
  91. data/test/functional/test_callbacks.rb +104 -34
  92. data/test/functional/test_dirty.rb +16 -16
  93. data/test/functional/test_document.rb +12 -924
  94. data/test/functional/test_dynamic_querying.rb +75 -0
  95. data/test/functional/test_embedded_document.rb +88 -8
  96. data/test/functional/test_identity_map.rb +41 -43
  97. data/test/functional/{test_indexing.rb → test_indexes.rb} +3 -5
  98. data/test/functional/test_logger.rb +1 -1
  99. data/test/functional/test_modifiers.rb +275 -181
  100. data/test/functional/test_pagination.rb +13 -15
  101. data/test/functional/test_protected.rb +25 -11
  102. data/test/functional/test_querying.rb +873 -0
  103. data/test/functional/test_safe.rb +76 -0
  104. data/test/functional/test_sci.rb +230 -0
  105. data/test/functional/test_scopes.rb +171 -0
  106. data/test/functional/test_string_id_compatibility.rb +11 -11
  107. data/test/functional/test_timestamps.rb +0 -2
  108. data/test/functional/test_userstamps.rb +0 -1
  109. data/test/functional/test_validations.rb +44 -31
  110. data/test/models.rb +18 -17
  111. data/test/{active_model_lint_test.rb → test_active_model_lint.rb} +3 -1
  112. data/test/test_helper.rb +59 -16
  113. data/test/unit/associations/test_base.rb +47 -42
  114. data/test/unit/associations/test_proxy.rb +15 -15
  115. data/test/unit/serializers/test_json_serializer.rb +29 -29
  116. data/test/unit/test_clone.rb +69 -0
  117. data/test/unit/test_descendant_appends.rb +3 -3
  118. data/test/unit/test_document.rb +49 -67
  119. data/test/unit/test_dynamic_finder.rb +53 -51
  120. data/test/unit/test_embedded_document.rb +19 -38
  121. data/test/unit/{test_support.rb → test_extensions.rb} +136 -122
  122. data/test/unit/test_key.rb +185 -0
  123. data/test/unit/test_keys.rb +29 -147
  124. data/test/unit/test_mongo_mapper.rb +3 -48
  125. data/test/unit/test_pagination.rb +1 -150
  126. data/test/unit/test_rails.rb +77 -19
  127. data/test/unit/test_rails_compatibility.rb +12 -12
  128. data/test/unit/test_serialization.rb +5 -5
  129. data/test/unit/test_time_zones.rb +9 -9
  130. data/test/unit/test_validations.rb +46 -46
  131. metadata +157 -155
  132. data/.gitignore +0 -10
  133. data/Rakefile +0 -55
  134. data/VERSION +0 -1
  135. data/lib/mongo_mapper/plugins/pagination/proxy.rb +0 -72
  136. data/lib/mongo_mapper/query.rb +0 -130
  137. data/lib/mongo_mapper/support.rb +0 -215
  138. data/mongo_mapper.gemspec +0 -196
  139. data/performance/read_write.rb +0 -52
  140. data/specs.watchr +0 -51
  141. data/test/support/custom_matchers.rb +0 -55
  142. data/test/support/timing.rb +0 -16
  143. data/test/unit/test_query.rb +0 -340
@@ -0,0 +1,75 @@
1
+ require 'test_helper'
2
+
3
+ class DynamicQueryingTest < Test::Unit::TestCase
4
+ def setup
5
+ @document = Doc do
6
+ scope :nunes, where(:last_name => 'Nunemaker')
7
+
8
+ key :first_name, String
9
+ key :last_name, String
10
+ key :age, Integer
11
+ key :date, Date
12
+ end
13
+
14
+ @doc1 = @document.create(:first_name => 'John', :last_name => 'Nunemaker', :age => 27)
15
+ @doc2 = @document.create(:first_name => 'Steve', :last_name => 'Smith', :age => 28)
16
+ @doc3 = @document.create(:first_name => 'Steph', :last_name => 'Nunemaker', :age => 26)
17
+ end
18
+
19
+ should "find document based on argument" do
20
+ @document.find_by_first_name('John').should == @doc1
21
+ @document.find_by_last_name('Nunemaker', :order => 'age desc').should == @doc1
22
+ @document.find_by_age(27).should == @doc1
23
+ end
24
+
25
+ should "not raise error" do
26
+ @document.find_by_first_name('Mongo').should be_nil
27
+ end
28
+
29
+ should "define a method for each key" do
30
+ @document.methods(false).select { |e| e =~ /^find_by_/ }.size == @document.keys.size
31
+ end
32
+
33
+ should "find document based on all arguments" do
34
+ @document.find_by_first_name_and_last_name_and_age('John', 'Nunemaker', 27).should == @doc1
35
+ end
36
+
37
+ should "not find the document if an argument is wrong" do
38
+ @document.find_by_first_name_and_last_name_and_age('John', 'Nunemaker', 28).should be_nil
39
+ end
40
+
41
+ should "find all documents based on arguments" do
42
+ docs = @document.find_all_by_last_name('Nunemaker')
43
+ docs.should be_kind_of(Array)
44
+ docs.should include(@doc1)
45
+ docs.should include(@doc3)
46
+ end
47
+
48
+ should "initialize document with given arguments" do
49
+ doc = @document.find_or_initialize_by_first_name_and_last_name('David', 'Cuadrado')
50
+ doc.should be_new
51
+ doc.first_name.should == 'David'
52
+ end
53
+
54
+ should "not initialize document if document is found" do
55
+ doc = @document.find_or_initialize_by_first_name('John')
56
+ doc.should_not be_new
57
+ end
58
+
59
+ should "create document with given arguments" do
60
+ doc = @document.find_or_create_by_first_name_and_last_name('David', 'Cuadrado')
61
+ doc.should_not be_new
62
+ doc.first_name.should == 'David'
63
+ end
64
+
65
+ should "raise error if document is not found when using !" do
66
+ lambda {
67
+ @document.find_by_first_name_and_last_name!(1,2)
68
+ }.should raise_error(MongoMapper::DocumentNotFound)
69
+ end
70
+
71
+ should "work on scopes" do
72
+ @document.nunes.find_by_first_name('Steph').should == @doc3
73
+ @document.nunes.find_all_by_first_name('Steph').should == [@doc3]
74
+ end
75
+ end
@@ -42,6 +42,14 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
42
42
  address._parent_document.should be(doc)
43
43
  address._root_document.should be(doc)
44
44
  end
45
+
46
+ should "assign _parent_document and _root_document when loading" do
47
+ address = @address_class.new(:city => 'South Bend', :state => 'IN')
48
+ doc = @klass.create(:foo => address)
49
+ doc.reload
50
+ doc.foo._parent_document.should be(doc)
51
+ doc.foo._root_document.should be(doc)
52
+ end
45
53
  end
46
54
 
47
55
  should "correctly instantiate single collection inherited embedded documents" do
@@ -53,31 +61,93 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
53
61
  doc1.reload.message.class.should be(Enter)
54
62
  end
55
63
 
56
- context "new?" do
64
+ context "new? (embedded key)" do
57
65
  setup do
58
66
  @klass.key :foo, @address_class
59
67
  end
60
68
 
61
- should "be new until document is saved" do
69
+ should "be true until document is saved" do
62
70
  address = @address_class.new(:city => 'South Bend', :state => 'IN')
63
71
  doc = @klass.new(:foo => address)
64
- address.new?.should == true
72
+ address.new?.should be_true
65
73
  end
66
74
 
67
- should "not be new after document is saved" do
75
+ should "be false after document is saved" do
68
76
  address = @address_class.new(:city => 'South Bend', :state => 'IN')
69
77
  doc = @klass.new(:foo => address)
70
78
  doc.save
71
- doc.foo.new?.should == false
79
+ doc.foo.new?.should be_false
72
80
  end
73
81
 
74
- should "not be new when document is read back" do
82
+ should "be false when loaded from database" do
75
83
  address = @address_class.new(:city => 'South Bend', :state => 'IN')
76
84
  doc = @klass.new(:foo => address)
77
85
  doc.save
78
86
 
79
- doc = doc.reload
80
- doc.foo.new?.should == false
87
+ doc.reload
88
+ doc.foo.new?.should be_false
89
+ end
90
+ end
91
+
92
+ context "new? (embedded association)" do
93
+ setup do
94
+ @doc = @klass.new(:pets => [{:name => 'poo bear'}])
95
+ end
96
+
97
+ should "be true until document is saved" do
98
+ @doc.should be_new
99
+ @doc.pets.first.should be_new
100
+ end
101
+
102
+ should "be false after document is saved" do
103
+ @doc.save
104
+ @doc.pets.first.should_not be_new
105
+ end
106
+
107
+ should "be false when loaded from database" do
108
+ @doc.save
109
+ @doc.pets.first.should_not be_new
110
+ @doc.reload
111
+ @doc.pets.first.should_not be_new
112
+ end
113
+ end
114
+
115
+ context "#destroyed?" do
116
+ setup do
117
+ @doc = @klass.create(:pets => [@pet_klass.new(:name => 'sparky')])
118
+ end
119
+
120
+ should "be false if root document is not destroyed" do
121
+ @doc.should_not be_destroyed
122
+ @doc.pets.first.should_not be_destroyed
123
+ end
124
+
125
+ should "be true if root document is destroyed" do
126
+ @doc.destroy
127
+ @doc.should be_destroyed
128
+ @doc.pets.first.should be_destroyed
129
+ end
130
+ end
131
+
132
+ context "#persisted?" do
133
+ setup do
134
+ @doc = @klass.new(:name => 'persisted doc', :pets => [@pet_klass.new(:name => 'persisted pet')])
135
+ end
136
+
137
+ should "be false if new" do
138
+ @doc.pets.first.should_not be_persisted
139
+ end
140
+
141
+ should "be false if destroyed" do
142
+ @doc.save
143
+ @doc.destroy
144
+ @doc.pets.first.should be_destroyed
145
+ @doc.pets.first.should_not be_persisted
146
+ end
147
+
148
+ should "be true if not new or destroyed" do
149
+ @doc.save
150
+ @doc.pets.first.should be_persisted
81
151
  end
82
152
  end
83
153
 
@@ -127,4 +197,14 @@ class EmbeddedDocumentTest < Test::Unit::TestCase
127
197
  pet.expects(:save!)
128
198
  pet.update_attributes!(attributes)
129
199
  end
200
+
201
+ should "have database instance method that is equal to root document" do
202
+ person = @klass.create(:pets => [@pet_klass.new(:name => 'sparky')])
203
+ person.pets.first.database.should == person.database
204
+ end
205
+
206
+ should "have collection instance method that is equal to root document" do
207
+ person = @klass.create(:pets => [@pet_klass.new(:name => 'sparky')])
208
+ person.pets.first.collection.name.should == person.collection.name
209
+ end
130
210
  end
@@ -29,16 +29,14 @@ class IdentityMapTest < Test::Unit::TestCase
29
29
  MongoMapper::Plugins::IdentityMap.models.clear
30
30
 
31
31
  @person_class = Doc('Person') do
32
- set_collection_name 'people'
33
32
  plugin MongoMapper::Plugins::IdentityMap
34
-
33
+
35
34
  key :name, String
36
35
  end
37
36
 
38
37
  @post_class = Doc('Post') do
39
- set_collection_name 'posts'
40
38
  plugin MongoMapper::Plugins::IdentityMap
41
-
39
+
42
40
  key :title, String
43
41
  key :person_id, ObjectId
44
42
  end
@@ -66,7 +64,7 @@ class IdentityMapTest < Test::Unit::TestCase
66
64
 
67
65
  [@person_class, @post_class].each { |klass| klass.identity_map.should == {} }
68
66
  end
69
-
67
+
70
68
  context "IM on off status" do
71
69
  teardown do
72
70
  @post_class.identity_map_on
@@ -131,7 +129,7 @@ class IdentityMapTest < Test::Unit::TestCase
131
129
  expects_one_query
132
130
  @person.reload
133
131
  end
134
-
132
+
135
133
  should "add object back into map" do
136
134
  assert_in_map(@person)
137
135
  before_reload = @person
@@ -142,7 +140,7 @@ class IdentityMapTest < Test::Unit::TestCase
142
140
 
143
141
  context "#load" do
144
142
  setup do
145
- @id = Mongo::ObjectID.new
143
+ @id = BSON::ObjectID.new
146
144
  end
147
145
 
148
146
  should "add document to map" do
@@ -208,7 +206,7 @@ class IdentityMapTest < Test::Unit::TestCase
208
206
 
209
207
  # There are times when even though the id matches, other criteria doesn't
210
208
  # so we need to do the query to ensure that when criteria doesn't match
211
- # the document is in fact not found.
209
+ # the document is in fact not found.
212
210
  #
213
211
  # I'm open to not making this query if someone can figure out reliable
214
212
  # way to check if document matches criteria without querying.
@@ -217,13 +215,13 @@ class IdentityMapTest < Test::Unit::TestCase
217
215
  expects_one_query
218
216
  @person.posts.find(@post1.id)
219
217
  end
220
-
218
+
221
219
  should "return exact object" do
222
220
  assert_in_map(@post1)
223
221
  @person.posts.find(@post1.id)
224
222
  assert_in_map(@post1)
225
223
  end
226
-
224
+
227
225
  should "return nil if not found " do
228
226
  @person.posts.find(1234).should be_nil
229
227
  end
@@ -272,7 +270,7 @@ class IdentityMapTest < Test::Unit::TestCase
272
270
  found_person = @person_class.first(:_id => @person.id)
273
271
  assert_in_map(found_person)
274
272
  end
275
-
273
+
276
274
  should "return nil if not found" do
277
275
  @person_class.first(:name => 'Bill').should be_nil
278
276
  end
@@ -321,15 +319,15 @@ class IdentityMapTest < Test::Unit::TestCase
321
319
  assert_in_map(people.first, person2, person3)
322
320
  end
323
321
  end
324
-
322
+
325
323
  context "#find_by_id" do
326
324
  setup do
327
325
  @person = @person_class.create(:name => 'Bill')
328
326
  end
329
-
327
+
330
328
  should "return nil for document id not found in collection" do
331
329
  assert_in_map(@person)
332
- @person_class.find_by_id(1234).should be_nil
330
+ @person_class.find_by_id(BSON::ObjectID.new).should be_nil
333
331
  end
334
332
  end
335
333
 
@@ -344,13 +342,13 @@ class IdentityMapTest < Test::Unit::TestCase
344
342
  @person_class.first(:_id => @person.id, :select => 'name').should == @person
345
343
  @person_class.first(:_id => @person.id, 'fields' => ['name']).should == @person
346
344
  @person_class.last(:_id => @person.id, :select => 'name', :order => 'name').should == @person
347
- @person_class.find(@person.id, :select => 'name').should == @person
345
+ @person_class.fields(:name).find(@person.id).should == @person
348
346
  @person_class.all(:_id => @person.id, :select => 'name').should == [@person]
349
347
  assert_not_in_map(@person)
350
348
  end
351
-
349
+
352
350
  should "return nil if not found" do
353
- @person_class.find(1234, :select => 'name').should be_nil
351
+ @person_class.fields(:name).find(BSON::ObjectID.new).should be_nil
354
352
  end
355
353
  end
356
354
 
@@ -359,11 +357,10 @@ class IdentityMapTest < Test::Unit::TestCase
359
357
  class ::Item
360
358
  include MongoMapper::Document
361
359
  plugin MongoMapper::Plugins::IdentityMap
362
-
363
- key :_type, String
360
+
364
361
  key :title, String
365
362
  key :parent_id, ObjectId
366
-
363
+
367
364
  belongs_to :parent, :class_name => 'Item'
368
365
  one :blog, :class_name => 'Blog', :foreign_key => 'parent_id'
369
366
  end
@@ -388,44 +385,45 @@ class IdentityMapTest < Test::Unit::TestCase
388
385
  assert_in_map(blog)
389
386
  Item.identity_map.should equal(Blog.identity_map)
390
387
  end
391
-
388
+
392
389
  should "not query when finding by _id and _type" do
393
390
  blog = Blog.create(:title => 'Blog')
394
391
  post = BlogPost.create(:title => 'Mongo Rocks', :blog => blog)
395
392
  Item.identity_map.clear
396
-
393
+
397
394
  blog = Item.find(blog.id)
398
395
  post = Item.find(post.id)
399
396
  assert_in_map(blog, post)
400
-
397
+
401
398
  expect_no_queries
402
399
  post.blog
403
400
  Blog.find(blog.id)
404
401
  end
405
-
402
+
406
403
  should "load from map when using parent collection inherited class" do
407
404
  blog = Blog.create(:title => 'Jill')
408
405
  Item.find(blog.id).should equal(blog)
409
406
  end
410
-
407
+
411
408
  should "work correctly with belongs to proxy" do
412
409
  root = Item.create(:title => 'Root')
413
410
  assert_in_map(root)
414
-
411
+
415
412
  blog = Blog.create(:title => 'Jill', :parent => root)
413
+ blog.parent.inspect
416
414
  assert_in_map(blog)
417
- root.should equal(blog.parent)
415
+ root.should equal(blog.parent.target)
418
416
  end
419
-
417
+
420
418
  should "work correctly with one proxy" do
421
419
  blog = Blog.create(:title => 'Jill')
422
420
  assert_in_map(blog)
423
421
 
424
422
  root = Item.create(:title => 'Root', :blog => blog)
425
423
  assert_in_map(root)
426
- root.blog.should equal(blog)
424
+ blog.should equal(root.blog.target)
427
425
  end
428
-
426
+
429
427
  should "work correctly with one proxy create" do
430
428
  root = Item.create(:title => 'Root')
431
429
  blog = root.blog.create(:title => 'Blog')
@@ -440,65 +438,65 @@ class IdentityMapTest < Test::Unit::TestCase
440
438
  assert_not_in_map(post)
441
439
  end
442
440
  end
443
-
441
+
444
442
  should "not remove from map on delete" do
445
443
  post = @post_class.create(:title => 'Bill')
446
444
  assert_in_map(post)
447
-
445
+
448
446
  @post_class.without_identity_map do
449
447
  post.destroy
450
448
  end
451
-
449
+
452
450
  assert_in_map(post)
453
451
  end
454
-
452
+
455
453
  should "not add to map when loading" do
456
454
  @post_class.without_identity_map do
457
- post = @post_class.load({'_id' => Mongo::ObjectID.new, 'title' => 'Awesome!'})
455
+ post = @post_class.load({'_id' => BSON::ObjectID.new, 'title' => 'Awesome!'})
458
456
  assert_not_in_map(post)
459
457
  end
460
458
  end
461
-
459
+
462
460
  should "not load from map when loading" do
463
461
  post = @post_class.create(:title => 'Awesome!')
464
-
462
+
465
463
  @post_class.without_identity_map do
466
464
  loaded = @post_class.load('_id' => post._id, 'title' => 'Awesome!')
467
465
  loaded.should_not equal(post)
468
466
  end
469
467
  end
470
-
468
+
471
469
  context "all" do
472
470
  should "not add to map" do
473
471
  @post_class.without_identity_map do
474
472
  post1 = @post_class.create(:title => 'Foo')
475
473
  post2 = @post_class.create(:title => 'Bar')
476
474
  @post_class.identity_map.clear
477
-
475
+
478
476
  assert_not_in_map(@post_class.all)
479
477
  end
480
478
  end
481
479
  end
482
-
480
+
483
481
  context "first" do
484
482
  should "not add to map" do
485
483
  @post_class.without_identity_map do
486
484
  post1 = @post_class.create(:title => 'Foo')
487
485
  post2 = @post_class.create(:title => 'Bar')
488
486
  @post_class.identity_map.clear
489
-
487
+
490
488
  assert_not_in_map(@post_class.first)
491
489
  end
492
490
  end
493
491
  end
494
-
492
+
495
493
  context "last" do
496
494
  should "not add to map" do
497
495
  @post_class.without_identity_map do
498
496
  post1 = @post_class.create(:title => 'Foo')
499
497
  post2 = @post_class.create(:title => 'Bar')
500
498
  @post_class.identity_map.clear
501
-
499
+
502
500
  assert_not_in_map(@post_class.last(:order => 'title'))
503
501
  end
504
502
  end
@@ -4,15 +4,13 @@ class IndexingTest < Test::Unit::TestCase
4
4
  context "Indexing" do
5
5
  setup do
6
6
  @document = Doc do
7
- set_collection_name 'users'
8
-
9
7
  key :first_name, String
10
8
  key :last_name, String
11
9
  key :age, Integer
12
10
  key :date, Date
13
11
  end
14
- drop_indexes(@document)
15
12
  end
13
+ teardown { drop_indexes(@document) }
16
14
 
17
15
  should "allow creating index for a key" do
18
16
  @document.ensure_index :first_name
@@ -31,8 +29,8 @@ class IndexingTest < Test::Unit::TestCase
31
29
  # just checking have_index('first_name_1_last_name_-1') I'm checking
32
30
  # the values of the indexes to make sure the index creation was successful
33
31
  @document.collection.index_information.detect do |index|
34
- keys = index[1]
35
- keys.include?(['first_name', 1]) && keys.include?(['last_name', -1])
32
+ keys = index[0]
33
+ keys.include?('first_name_1') && keys.include?('last_name_-1')
36
34
  end.should_not be_nil
37
35
  end
38
36
 
@@ -11,7 +11,7 @@ class LoggerTest < Test::Unit::TestCase
11
11
  should "be able to get access to that logger" do
12
12
  MongoMapper.logger.should == @logger
13
13
  end
14
-
14
+
15
15
  should "be able to log messages" do
16
16
  MongoMapper.logger.debug 'testing'
17
17
  @output.string.include?('testing').should be_true