mongoid 4.0.2 → 5.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -1
  3. data/README.md +14 -13
  4. data/lib/config/locales/en.yml +28 -28
  5. data/lib/mongoid.rb +28 -21
  6. data/lib/mongoid/atomic.rb +2 -4
  7. data/lib/mongoid/attributes.rb +7 -7
  8. data/lib/mongoid/attributes/processing.rb +4 -1
  9. data/lib/mongoid/attributes/readonly.rb +2 -2
  10. data/lib/mongoid/changeable.rb +4 -6
  11. data/lib/mongoid/clients.rb +142 -0
  12. data/lib/mongoid/clients/factory.rb +78 -0
  13. data/lib/mongoid/{sessions → clients}/options.rb +30 -19
  14. data/lib/mongoid/{sessions → clients}/storage_options.rb +27 -13
  15. data/lib/mongoid/{sessions → clients}/thread_options.rb +6 -3
  16. data/lib/mongoid/clients/validators.rb +2 -0
  17. data/lib/mongoid/{sessions → clients}/validators/storage.rb +5 -2
  18. data/lib/mongoid/composable.rb +3 -3
  19. data/lib/mongoid/config.rb +39 -41
  20. data/lib/mongoid/config/environment.rb +1 -1
  21. data/lib/mongoid/config/validators.rb +1 -1
  22. data/lib/mongoid/config/validators/{session.rb → client.rb} +31 -28
  23. data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
  24. data/lib/mongoid/contextual/atomic.rb +11 -11
  25. data/lib/mongoid/contextual/command.rb +9 -6
  26. data/lib/mongoid/contextual/geo_near.rb +17 -1
  27. data/lib/mongoid/contextual/map_reduce.rb +12 -11
  28. data/lib/mongoid/contextual/memory.rb +2 -5
  29. data/lib/mongoid/contextual/mongo.rb +92 -82
  30. data/lib/mongoid/contextual/none.rb +13 -0
  31. data/lib/mongoid/copyable.rb +6 -1
  32. data/lib/mongoid/criteria.rb +36 -3
  33. data/lib/mongoid/document.rb +3 -4
  34. data/lib/mongoid/errors.rb +6 -6
  35. data/lib/mongoid/errors/{mixed_session_configuration.rb → mixed_client_configuration.rb} +5 -5
  36. data/lib/mongoid/errors/no_client_config.rb +22 -0
  37. data/lib/mongoid/errors/{no_session_database.rb → no_client_database.rb} +4 -4
  38. data/lib/mongoid/errors/{no_session_hosts.rb → no_client_hosts.rb} +4 -4
  39. data/lib/mongoid/errors/{no_sessions_config.rb → no_clients_config.rb} +4 -4
  40. data/lib/mongoid/errors/no_default_client.rb +23 -0
  41. data/lib/mongoid/extensions/hash.rb +5 -1
  42. data/lib/mongoid/extensions/object.rb +3 -2
  43. data/lib/mongoid/extensions/set.rb +5 -5
  44. data/lib/mongoid/factory.rb +4 -2
  45. data/lib/mongoid/fields.rb +7 -2
  46. data/lib/mongoid/findable.rb +4 -1
  47. data/lib/mongoid/indexable.rb +15 -9
  48. data/lib/mongoid/persistable.rb +1 -2
  49. data/lib/mongoid/persistable/creatable.rb +2 -2
  50. data/lib/mongoid/persistable/deletable.rb +3 -3
  51. data/lib/mongoid/persistable/incrementable.rb +1 -1
  52. data/lib/mongoid/persistable/logical.rb +1 -1
  53. data/lib/mongoid/persistable/poppable.rb +1 -1
  54. data/lib/mongoid/persistable/pullable.rb +2 -2
  55. data/lib/mongoid/persistable/pushable.rb +2 -2
  56. data/lib/mongoid/persistable/renamable.rb +1 -1
  57. data/lib/mongoid/persistable/settable.rb +1 -1
  58. data/lib/mongoid/persistable/unsettable.rb +1 -1
  59. data/lib/mongoid/persistable/updatable.rb +2 -2
  60. data/lib/mongoid/persistable/upsertable.rb +1 -1
  61. data/lib/mongoid/query_cache.rb +98 -104
  62. data/lib/mongoid/railtie.rb +1 -21
  63. data/lib/mongoid/railties/database.rake +1 -1
  64. data/lib/mongoid/relations/builders.rb +3 -1
  65. data/lib/mongoid/relations/counter_cache.rb +1 -1
  66. data/lib/mongoid/relations/embedded/batchable.rb +3 -10
  67. data/lib/mongoid/relations/embedded/many.rb +4 -2
  68. data/lib/mongoid/relations/many.rb +1 -0
  69. data/lib/mongoid/relations/proxy.rb +6 -6
  70. data/lib/mongoid/relations/referenced/many.rb +2 -1
  71. data/lib/mongoid/relations/targets/enumerable.rb +11 -11
  72. data/lib/mongoid/relations/touchable.rb +1 -1
  73. data/lib/mongoid/reloadable.rb +2 -2
  74. data/lib/mongoid/scopable.rb +6 -17
  75. data/lib/mongoid/selectable.rb +1 -36
  76. data/lib/mongoid/serializable.rb +2 -2
  77. data/lib/mongoid/stateful.rb +0 -1
  78. data/lib/mongoid/tasks/database.rake +2 -2
  79. data/lib/mongoid/tasks/database.rb +23 -16
  80. data/lib/mongoid/threaded.rb +54 -33
  81. data/lib/mongoid/threaded/lifecycle.rb +21 -16
  82. data/lib/mongoid/traversable.rb +16 -1
  83. data/lib/mongoid/validatable.rb +1 -1
  84. data/lib/mongoid/validatable/queryable.rb +1 -1
  85. data/lib/mongoid/validatable/uniqueness.rb +3 -20
  86. data/lib/mongoid/version.rb +1 -1
  87. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +91 -57
  88. data/lib/rails/mongoid.rb +2 -2
  89. data/spec/app/models/audio.rb +1 -1
  90. data/spec/app/models/band.rb +1 -0
  91. data/spec/app/models/company.rb +5 -0
  92. data/spec/app/models/label.rb +7 -0
  93. data/spec/app/models/pub.rb +6 -0
  94. data/spec/app/models/staff.rb +7 -0
  95. data/spec/app/models/store_as_dup_test1.rb +5 -0
  96. data/spec/app/models/store_as_dup_test2.rb +5 -0
  97. data/spec/config/mongoid.yml +7 -25
  98. data/spec/mongoid/atomic/paths_spec.rb +3 -11
  99. data/spec/mongoid/attributes/nested_spec.rb +16 -16
  100. data/spec/mongoid/attributes/readonly_spec.rb +80 -18
  101. data/spec/mongoid/attributes_spec.rb +3 -3
  102. data/spec/mongoid/changeable_spec.rb +70 -0
  103. data/spec/mongoid/clients/factory_spec.rb +284 -0
  104. data/spec/mongoid/{sessions → clients}/options_spec.rb +4 -6
  105. data/spec/mongoid/clients_spec.rb +739 -0
  106. data/spec/mongoid/config/environment_spec.rb +14 -11
  107. data/spec/mongoid/config_spec.rb +33 -48
  108. data/spec/mongoid/contextual/atomic_spec.rb +1 -17
  109. data/spec/mongoid/contextual/geo_near_spec.rb +35 -0
  110. data/spec/mongoid/contextual/mongo_spec.rb +26 -83
  111. data/spec/mongoid/contextual/none_spec.rb +15 -0
  112. data/spec/mongoid/copyable_spec.rb +35 -1
  113. data/spec/mongoid/criteria/findable_spec.rb +197 -0
  114. data/spec/mongoid/criteria/modifiable_spec.rb +7 -29
  115. data/spec/mongoid/criteria_spec.rb +74 -91
  116. data/spec/mongoid/document_spec.rb +1 -1
  117. data/spec/mongoid/errors/{mixed_session_configuration_spec.rb → mixed_client_configuration_spec.rb} +1 -1
  118. data/spec/mongoid/errors/{no_session_config_spec.rb → no_client_config_spec.rb} +4 -4
  119. data/spec/mongoid/errors/{no_session_database_spec.rb → no_client_database_spec.rb} +4 -4
  120. data/spec/mongoid/errors/{no_session_hosts_spec.rb → no_client_hosts_spec.rb} +3 -3
  121. data/spec/mongoid/errors/{no_sessions_config_spec.rb → no_clients_config_spec.rb} +2 -2
  122. data/spec/mongoid/fields/localized_spec.rb +1 -0
  123. data/spec/mongoid/fields_spec.rb +1 -0
  124. data/spec/mongoid/findable_spec.rb +2 -23
  125. data/spec/mongoid/indexable_spec.rb +12 -8
  126. data/spec/mongoid/interceptable_spec.rb +15 -0
  127. data/spec/mongoid/persistable/settable_spec.rb +16 -0
  128. data/spec/mongoid/persistable/updatable_spec.rb +3 -2
  129. data/spec/mongoid/persistable_spec.rb +4 -4
  130. data/spec/mongoid/query_cache_spec.rb +13 -8
  131. data/spec/mongoid/relations/auto_save_spec.rb +1 -1
  132. data/spec/mongoid/relations/counter_cache_spec.rb +34 -0
  133. data/spec/mongoid/relations/eager/belongs_to_spec.rb +9 -0
  134. data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +3 -3
  135. data/spec/mongoid/relations/embedded/many_spec.rb +123 -1
  136. data/spec/mongoid/relations/embedded/one_spec.rb +3 -3
  137. data/spec/mongoid/relations/proxy_spec.rb +28 -0
  138. data/spec/mongoid/relations/referenced/in_spec.rb +1 -1
  139. data/spec/mongoid/relations/referenced/many_spec.rb +47 -23
  140. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +1 -1
  141. data/spec/mongoid/relations/referenced/one_spec.rb +1 -1
  142. data/spec/mongoid/relations/targets/enumerable_spec.rb +9 -2
  143. data/spec/mongoid/reloadable_spec.rb +6 -6
  144. data/spec/mongoid/scopable_spec.rb +41 -28
  145. data/spec/mongoid/selectable_spec.rb +6 -16
  146. data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
  147. data/spec/mongoid/tasks/database_spec.rb +2 -2
  148. data/spec/mongoid/threaded_spec.rb +0 -7
  149. data/spec/mongoid/traversable_spec.rb +2 -2
  150. data/spec/mongoid/validatable/uniqueness_spec.rb +30 -1
  151. data/spec/mongoid_spec.rb +13 -15
  152. data/spec/rails/mongoid_spec.rb +13 -4
  153. data/spec/spec_helper.rb +44 -27
  154. data/spec/support/authorization.rb +12 -0
  155. data/spec/support/expectations.rb +14 -0
  156. metadata +52 -59
  157. data/lib/mongoid/contextual/find_and_modify.rb +0 -69
  158. data/lib/mongoid/contextual/text_search.rb +0 -178
  159. data/lib/mongoid/criteria/#findable.rb# +0 -141
  160. data/lib/mongoid/errors/no_default_session.rb +0 -23
  161. data/lib/mongoid/errors/no_session_config.rb +0 -22
  162. data/lib/mongoid/log_subscriber.rb +0 -55
  163. data/lib/mongoid/positional.rb +0 -71
  164. data/lib/mongoid/sessions.rb +0 -125
  165. data/lib/mongoid/sessions/factory.rb +0 -131
  166. data/lib/mongoid/sessions/mongo_uri.rb +0 -93
  167. data/lib/mongoid/sessions/validators.rb +0 -2
  168. data/lib/mongoid/support/query_counter.rb +0 -23
  169. data/spec/helpers.rb +0 -18
  170. data/spec/mongoid/#atomic_spec.rb# +0 -365
  171. data/spec/mongoid/contextual/find_and_modify_spec.rb +0 -220
  172. data/spec/mongoid/contextual/text_search_spec.rb +0 -209
  173. data/spec/mongoid/log_subscriber_spec.rb +0 -75
  174. data/spec/mongoid/positional_spec.rb +0 -222
  175. data/spec/mongoid/sessions/factory_spec.rb +0 -333
  176. data/spec/mongoid/sessions/mongo_uri_spec.rb +0 -103
  177. data/spec/mongoid/sessions_spec.rb +0 -1252
@@ -150,5 +150,14 @@ describe Mongoid::Relations::Eager::BelongsTo do
150
150
  }.to raise_error(Mongoid::Errors::EagerLoad)
151
151
  end
152
152
  end
153
+
154
+ context "when setting the foreign key id directly" do
155
+
156
+ it "works" do
157
+ id = BSON::ObjectId.new
158
+ game = Game.new(:person_id => id)
159
+ expect(game.person_id).to eql(id)
160
+ end
161
+ end
153
162
  end
154
163
  end
@@ -45,7 +45,7 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
45
45
 
46
46
  it "queries twice" do
47
47
  expect_query(2) do
48
- Person.all.includes(:houses).each do |person|
48
+ Person.asc(:_id).includes(:houses).each do |person|
49
49
  expect(person.houses).to_not be_nil
50
50
 
51
51
  expect(person.houses.length).to be(3)
@@ -54,7 +54,7 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
54
54
  end
55
55
 
56
56
  it "has all items" do
57
- Person.all.includes(:houses).each do |person|
57
+ Person.asc(:_id).includes(:houses).each do |person|
58
58
  expect(person.ivar(:houses).length).to be(3)
59
59
  end
60
60
  end
@@ -63,7 +63,7 @@ describe Mongoid::Relations::Eager::HasAndBelongsToMany do
63
63
  context "when the relation is not polymorphic" do
64
64
 
65
65
  let(:eager) do
66
- Person.includes(:preferences).last
66
+ Person.asc(:_id).includes(:preferences).last
67
67
  end
68
68
 
69
69
  context "when the eager load has returned documents" do
@@ -3873,7 +3873,7 @@ describe Mongoid::Relations::Embedded::Many do
3873
3873
  before do
3874
3874
  band.collection.
3875
3875
  find(_id: band.id).
3876
- update("$set" => { records: [{ name: "Moderat" }]})
3876
+ update_one("$set" => { records: [{ name: "Moderat" }]})
3877
3877
  end
3878
3878
 
3879
3879
  context "when loading the documents" do
@@ -3933,4 +3933,126 @@ describe Mongoid::Relations::Embedded::Many do
3933
3933
  expect(loaded.extension).to eq("Testing")
3934
3934
  end
3935
3935
  end
3936
+
3937
+ context "deleting embedded documents" do
3938
+
3939
+ it "able to delete embedded documents upon condition" do
3940
+ company = Company.new
3941
+ 4.times { |i| company.staffs << Staff.new(age: 50 + i)}
3942
+ 2.times { |i| company.staffs << Staff.new(age: 40)}
3943
+ company.save
3944
+ company.staffs.delete_if {|x| x.age >= 50}
3945
+ expect(company.staffs.count).to eq(2)
3946
+ end
3947
+ end
3948
+
3949
+ context "when substituting polymorphic documents" do
3950
+
3951
+ before(:all) do
3952
+ class DNS; end
3953
+
3954
+ class DNS::Zone
3955
+ include Mongoid::Document
3956
+ embeds_many :rrsets, class_name: 'DNS::RRSet', inverse_of: :zone
3957
+ embeds_one :soa, class_name: 'DNS::Record', as: :container
3958
+ end
3959
+
3960
+ class DNS::RRSet
3961
+ include Mongoid::Document
3962
+ embedded_in :zone, class_name: 'DNS::Zone', inverse_of: :rrsets
3963
+ embeds_many :records, class_name: 'DNS::Record', as: :container
3964
+ end
3965
+
3966
+ class DNS::Record
3967
+ include Mongoid::Document
3968
+ embedded_in :container, polymorphic: true
3969
+ end
3970
+ end
3971
+
3972
+ after(:all) do
3973
+ Object.send(:remove_const, :DNS)
3974
+ end
3975
+
3976
+ context "when the parent is new" do
3977
+
3978
+ let(:zone) do
3979
+ DNS::Zone.new
3980
+ end
3981
+
3982
+ let(:soa_1) do
3983
+ DNS::Record.new
3984
+ end
3985
+
3986
+ context "when replacing the set document" do
3987
+
3988
+ let(:soa_2) do
3989
+ DNS::Record.new
3990
+ end
3991
+
3992
+ before do
3993
+ zone.soa = soa_1
3994
+ end
3995
+
3996
+ it "properly sets the metadata" do
3997
+ expect(zone.soa = soa_2).to eq(soa_2)
3998
+ end
3999
+ end
4000
+
4001
+ context "when deleting the set document" do
4002
+
4003
+ let(:soa_2) do
4004
+ DNS::Record.new
4005
+ end
4006
+
4007
+ before do
4008
+ zone.soa = soa_1
4009
+ end
4010
+
4011
+ it "properly sets the metadata" do
4012
+ expect(zone.soa.delete).to be true
4013
+ end
4014
+ end
4015
+ end
4016
+
4017
+ context "when the parent is persisted" do
4018
+
4019
+ let(:zone) do
4020
+ DNS::Zone.create
4021
+ end
4022
+
4023
+ let(:soa_1) do
4024
+ DNS::Record.new
4025
+ end
4026
+
4027
+ context "when replacing the set document" do
4028
+
4029
+ let(:soa_2) do
4030
+ DNS::Record.new
4031
+ end
4032
+
4033
+ before do
4034
+ zone.soa = soa_1
4035
+ end
4036
+
4037
+ it "properly sets the metadata" do
4038
+ expect(zone.soa = soa_2).to eq(soa_2)
4039
+ end
4040
+ end
4041
+
4042
+ context "when deleting the set document" do
4043
+
4044
+ let(:soa_2) do
4045
+ DNS::Record.new
4046
+ end
4047
+
4048
+ before do
4049
+ zone.soa = soa_1
4050
+ end
4051
+
4052
+ it "properly sets the metadata" do
4053
+ expect(zone.soa.delete).to be true
4054
+ end
4055
+ end
4056
+ end
4057
+ end
3936
4058
  end
@@ -947,7 +947,7 @@ describe Mongoid::Relations::Embedded::One do
947
947
  context "when a parent was removed outside of mongoid" do
948
948
 
949
949
  before do
950
- person.collection.where(_id: person.id).update(
950
+ person.collection.find(_id: person.id).update_one(
951
951
  "$pull" => { "addresses" => { _id: address_one.id }}
952
952
  )
953
953
  end
@@ -963,7 +963,7 @@ describe Mongoid::Relations::Embedded::One do
963
963
  end
964
964
 
965
965
  before do
966
- address_two.code = code
966
+ person.reload.addresses.first.code = code
967
967
  end
968
968
 
969
969
  it "reloads the correct number" do
@@ -982,7 +982,7 @@ describe Mongoid::Relations::Embedded::One do
982
982
  before do
983
983
  band.collection.
984
984
  find(_id: band.id).
985
- update("$set" => { label: { name: "Mute" }})
985
+ update_one("$set" => { label: { name: "Mute" }})
986
986
  end
987
987
 
988
988
  context "when loading the documents" do
@@ -2,6 +2,34 @@ require "spec_helper"
2
2
 
3
3
  describe Mongoid::Relations::Proxy do
4
4
 
5
+ describe "#find" do
6
+ let(:person) do
7
+ Person.create
8
+ end
9
+
10
+ let(:messages) do
11
+ person.messages
12
+ end
13
+
14
+ let(:msg1) do
15
+ messages.create(body: 'msg1')
16
+ end
17
+
18
+ it "returns nil with no arguments" do
19
+ expect(messages.find).to be_nil
20
+ expect(messages.send(:find)).to be_nil
21
+ expect(messages.__send__(:find)).to be_nil
22
+ expect(messages.public_send(:find)).to be_nil
23
+ end
24
+
25
+ it "returns the object corresponding to the id" do
26
+ expect(messages.find(msg1.id)).to eq(msg1)
27
+ expect(messages.send(:find, msg1.id)).to eq(msg1)
28
+ expect(messages.__send__(:find, msg1.id)).to eq(msg1)
29
+ expect(messages.public_send(:find, msg1.id)).to eq(msg1)
30
+ end
31
+ end
32
+
5
33
  describe "#extend" do
6
34
 
7
35
  before(:all) do
@@ -1240,7 +1240,7 @@ describe Mongoid::Relations::Referenced::In do
1240
1240
 
1241
1241
  before do
1242
1242
  Person.collection.find({ _id: person_one.id }).
1243
- update({ "$set" => { title: "Madam" }})
1243
+ update_one({ "$set" => { title: "Madam" }})
1244
1244
  end
1245
1245
 
1246
1246
  let(:reloaded) do
@@ -292,7 +292,7 @@ describe Mongoid::Relations::Referenced::Many do
292
292
  it "raises an error" do
293
293
  expect {
294
294
  person.posts.send(method, post)
295
- }.to raise_error(Moped::Errors::OperationFailure)
295
+ }.to raise_error(Mongo::Error::OperationFailure)
296
296
  end
297
297
  end
298
298
  end
@@ -1536,7 +1536,7 @@ describe Mongoid::Relations::Referenced::Many do
1536
1536
  person.posts.create do |doc|
1537
1537
  doc._id = existing.id
1538
1538
  end
1539
- }.to raise_error(Moped::Errors::OperationFailure)
1539
+ }.to raise_error(Mongo::Error::OperationFailure)
1540
1540
  end
1541
1541
  end
1542
1542
  end
@@ -2164,30 +2164,24 @@ describe Mongoid::Relations::Referenced::Many do
2164
2164
 
2165
2165
  describe "#find" do
2166
2166
 
2167
- context "when the identity map is enabled" do
2167
+ context "when iterating after the find" do
2168
2168
 
2169
- context "when the document is in the map" do
2170
-
2171
- let(:person) do
2172
- Person.create
2173
- end
2174
-
2175
- before do
2176
- person.posts.create(title: "Test")
2177
- end
2169
+ let(:person) do
2170
+ Person.create!
2171
+ end
2178
2172
 
2179
- context "when the document does not belong to the relation" do
2173
+ let(:post_id) do
2174
+ person.posts.first.id
2175
+ end
2180
2176
 
2181
- let!(:post) do
2182
- Post.create(title: "testing")
2183
- end
2177
+ before do
2178
+ 5.times { person.posts.create! }
2179
+ end
2184
2180
 
2185
- it "raises an error" do
2186
- expect {
2187
- person.posts.find(post.id)
2188
- }.to raise_error(Mongoid::Errors::DocumentNotFound)
2189
- end
2190
- end
2181
+ it "does not change the in memory size" do
2182
+ expect {
2183
+ person.posts.find(post_id)
2184
+ }.not_to change { person.posts.to_a.size }
2191
2185
  end
2192
2186
  end
2193
2187
 
@@ -2807,6 +2801,35 @@ describe Mongoid::Relations::Referenced::Many do
2807
2801
  end
2808
2802
  end
2809
2803
 
2804
+ describe "#last" do
2805
+
2806
+ let(:person) do
2807
+ Person.create!
2808
+ end
2809
+
2810
+ let!(:persisted_post) do
2811
+ person.posts.create!
2812
+ end
2813
+
2814
+ context "when a new document is added" do
2815
+
2816
+ let!(:new_post) do
2817
+ person.posts.new
2818
+ end
2819
+
2820
+ context "when the target is subsequently loaded" do
2821
+
2822
+ before do
2823
+ person.posts.entries
2824
+ end
2825
+
2826
+ it "returns the expected last document" do
2827
+ expect(person.posts.last).to eq(new_post)
2828
+ end
2829
+ end
2830
+ end
2831
+ end
2832
+
2810
2833
  describe ".macro" do
2811
2834
 
2812
2835
  it "returns has_many" do
@@ -3344,7 +3367,7 @@ describe Mongoid::Relations::Referenced::Many do
3344
3367
 
3345
3368
  before do
3346
3369
  Post.collection.find({ _id: post_one.id }).
3347
- update({ "$set" => { title: "reloaded" }})
3370
+ update_one({ "$set" => { title: "reloaded" }})
3348
3371
  end
3349
3372
 
3350
3373
  let(:reloaded) do
@@ -3687,6 +3710,7 @@ describe Mongoid::Relations::Referenced::Many do
3687
3710
  end
3688
3711
 
3689
3712
  context "when accessing a relation named parent" do
3713
+
3690
3714
  let!(:parent) do
3691
3715
  Odd.create(name: "odd parent")
3692
3716
  end
@@ -3274,7 +3274,7 @@ describe Mongoid::Relations::Referenced::ManyToMany do
3274
3274
 
3275
3275
  before do
3276
3276
  Preference.collection.find({ _id: preference_one.id }).
3277
- update({ "$set" => { name: "reloaded" }})
3277
+ update_one({ "$set" => { name: "reloaded" }})
3278
3278
  end
3279
3279
 
3280
3280
  let(:reloaded) do
@@ -1178,7 +1178,7 @@ describe Mongoid::Relations::Referenced::One do
1178
1178
 
1179
1179
  before do
1180
1180
  Game.collection.find({ _id: game_one.id }).
1181
- update({ "$set" => { name: "Diablo 2" }})
1181
+ update_one({ "$set" => { name: "Diablo 2" }})
1182
1182
  end
1183
1183
 
1184
1184
  let(:reloaded) do
@@ -122,6 +122,13 @@ describe Mongoid::Relations::Targets::Enumerable do
122
122
  end
123
123
  end
124
124
 
125
+ context "when compared to an enumerable class" do
126
+
127
+ it "returns true" do
128
+ expect(enumerable === described_class).to be true
129
+ end
130
+ end
131
+
125
132
  context "when compared to a different class" do
126
133
 
127
134
  it "returns false" do
@@ -1186,7 +1193,7 @@ describe Mongoid::Relations::Targets::Enumerable do
1186
1193
  context "when the enumerable is not loaded" do
1187
1194
 
1188
1195
  let(:criteria) do
1189
- Post.where(person_id: person.id)
1196
+ Post.asc(:_id).where(person_id: person.id)
1190
1197
  end
1191
1198
 
1192
1199
  let(:enumerable) do
@@ -1272,7 +1279,7 @@ describe Mongoid::Relations::Targets::Enumerable do
1272
1279
  context "when accessing from a reloaded child" do
1273
1280
 
1274
1281
  it "returns the last document" do
1275
- expect(post_one.reload.person.posts.last).to eq(post_two)
1282
+ expect(post_one.reload.person.posts.asc(:_id).last).to eq(post_two)
1276
1283
  end
1277
1284
  end
1278
1285
  end
@@ -115,7 +115,7 @@ describe Mongoid::Reloadable do
115
115
  before do
116
116
  Person.collection.find(
117
117
  { "_id" => person.id }
118
- ).update({ "$set" => { "addresses.0.number" => 3 }})
118
+ ).update_one({ "$set" => { "addresses.0.number" => 3 }})
119
119
  end
120
120
 
121
121
  let!(:reloaded) do
@@ -143,7 +143,7 @@ describe Mongoid::Reloadable do
143
143
 
144
144
  before do
145
145
  Person.collection.find({ "_id" => person.id }).
146
- update({ "$set" => { "name.last_name" => "Vicious" }})
146
+ update_one({ "$set" => { "name.last_name" => "Vicious" }})
147
147
  end
148
148
 
149
149
  let!(:reloaded) do
@@ -176,7 +176,7 @@ describe Mongoid::Reloadable do
176
176
 
177
177
  before do
178
178
  Person.collection.find({ "_id" => person.id }).
179
- update({ "$set" => { "addresses.0.locations.0.name" => "work" }})
179
+ update_one({ "$set" => { "addresses.0.locations.0.name" => "work" }})
180
180
  end
181
181
 
182
182
  let!(:reloaded) do
@@ -209,7 +209,7 @@ describe Mongoid::Reloadable do
209
209
 
210
210
  before do
211
211
  Person.collection.find({ "_id" => person.id }).
212
- update({ "$set" => { "addresses" => [] }})
212
+ update_one({ "$set" => { "addresses" => [] }})
213
213
  person.reload
214
214
  end
215
215
 
@@ -232,7 +232,7 @@ describe Mongoid::Reloadable do
232
232
 
233
233
  before do
234
234
  Game.collection.find({ "_id" => game.id }).
235
- update({ "$set" => { "score" => 75 }})
235
+ update_one({ "$set" => { "score" => 75 }})
236
236
  person.reload
237
237
  end
238
238
 
@@ -251,7 +251,7 @@ describe Mongoid::Reloadable do
251
251
 
252
252
  before do
253
253
  Person.collection.find({ "_id" => person.id }).
254
- update({ "$set" => { "title" => "Mam" }})
254
+ update_one({ "$set" => { "title" => "Mam" }})
255
255
  game.reload
256
256
  end
257
257