mongoid 5.1.5 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/lib/config/locales/en.yml +15 -0
  5. data/lib/mongoid.rb +5 -0
  6. data/lib/mongoid/attributes/dynamic.rb +3 -3
  7. data/lib/mongoid/clients/factory.rb +2 -0
  8. data/lib/mongoid/config.rb +1 -0
  9. data/lib/mongoid/config/options.rb +1 -1
  10. data/lib/mongoid/contextual/aggregable/mongo.rb +0 -1
  11. data/lib/mongoid/contextual/map_reduce.rb +20 -97
  12. data/lib/mongoid/contextual/memory.rb +1 -0
  13. data/lib/mongoid/contextual/mongo.rb +20 -15
  14. data/lib/mongoid/criteria.rb +2 -0
  15. data/lib/mongoid/document.rb +1 -0
  16. data/lib/mongoid/errors.rb +1 -0
  17. data/lib/mongoid/errors/in_memory_collation_not_supported.rb +20 -0
  18. data/lib/mongoid/errors/mongoid_error.rb +1 -1
  19. data/lib/mongoid/extensions.rb +1 -0
  20. data/lib/mongoid/extensions/decimal128.rb +39 -0
  21. data/lib/mongoid/fields/localized.rb +8 -3
  22. data/lib/mongoid/indexable/validators/options.rb +2 -1
  23. data/lib/mongoid/persistable/deletable.rb +3 -7
  24. data/lib/mongoid/persistable/settable.rb +3 -1
  25. data/lib/mongoid/query_cache.rb +24 -2
  26. data/lib/mongoid/relations/accessors.rb +1 -1
  27. data/lib/mongoid/relations/builders.rb +2 -2
  28. data/lib/mongoid/relations/eager.rb +2 -2
  29. data/lib/mongoid/relations/reflections.rb +5 -3
  30. data/lib/mongoid/relations/touchable.rb +1 -1
  31. data/lib/mongoid/scopable.rb +1 -1
  32. data/lib/mongoid/version.rb +1 -1
  33. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +6 -2
  34. data/spec/app/models/band.rb +1 -0
  35. data/spec/config/mongoid.yml +5 -0
  36. data/spec/mongoid/clients/factory_spec.rb +8 -0
  37. data/spec/mongoid/clients_spec.rb +78 -1
  38. data/spec/mongoid/config_spec.rb +31 -0
  39. data/spec/mongoid/contextual/atomic_spec.rb +342 -76
  40. data/spec/mongoid/contextual/map_reduce_spec.rb +111 -119
  41. data/spec/mongoid/contextual/memory_spec.rb +316 -56
  42. data/spec/mongoid/contextual/mongo_spec.rb +391 -11
  43. data/spec/mongoid/criteria_spec.rb +21 -2
  44. data/spec/mongoid/extensions/decimal128_spec.rb +44 -0
  45. data/spec/mongoid/extensions/time_spec.rb +2 -2
  46. data/spec/mongoid/fields/localized_spec.rb +91 -0
  47. data/spec/mongoid/indexable_spec.rb +44 -0
  48. data/spec/mongoid/persistable/settable_spec.rb +44 -0
  49. data/spec/mongoid/query_cache_spec.rb +86 -0
  50. data/spec/mongoid/relations/cyclic_spec.rb +22 -0
  51. data/spec/mongoid/relations/referenced/many_spec.rb +11 -0
  52. data/spec/mongoid/relations/referenced/many_to_many_spec.rb +11 -0
  53. data/spec/mongoid/relations/reflections_spec.rb +9 -9
  54. data/spec/mongoid/scopable_spec.rb +12 -0
  55. data/spec/spec_helper.rb +9 -0
  56. metadata +26 -16
  57. metadata.gz.sig +0 -0
@@ -2936,6 +2936,17 @@ describe Mongoid::Relations::Referenced::Many do
2936
2936
  end
2937
2937
  end
2938
2938
 
2939
+ context 'when providing a collation', if: collation_supported? do
2940
+
2941
+ let(:posts) do
2942
+ person.posts.where(title: "FIRST").collation(locale: 'en_US', strength: 2)
2943
+ end
2944
+
2945
+ it "applies the collation option to the query" do
2946
+ expect(posts).to eq([ post_one ])
2947
+ end
2948
+ end
2949
+
2939
2950
  context "when providing a criteria class method" do
2940
2951
 
2941
2952
  let(:posts) do
@@ -2654,6 +2654,17 @@ describe Mongoid::Relations::Referenced::ManyToMany do
2654
2654
  end
2655
2655
  end
2656
2656
 
2657
+ context 'when providing a collation', if: collation_supported? do
2658
+
2659
+ let(:preferences) do
2660
+ person.preferences.where(name: "FIRST").collation(locale: 'en_US', strength: 2).to_a
2661
+ end
2662
+
2663
+ it "applies the collation option to the query" do
2664
+ expect(preferences).to eq([ preference_one ])
2665
+ end
2666
+ end
2667
+
2657
2668
  context "when providing a criteria on id" do
2658
2669
 
2659
2670
  let(:preferences) do
@@ -74,23 +74,23 @@ describe Mongoid::Relations::Reflections do
74
74
  expect(relations.size).to eq(1)
75
75
  end
76
76
  end
77
- end
78
77
 
79
- context "when no relations exist for the macros" do
78
+ context "when no argument supplied" do
80
79
 
81
- let(:relations) do
82
- klass.reflect_on_all_associations(:embeds_one)
83
- end
80
+ let(:relations) do
81
+ klass.reflect_on_all_associations
82
+ end
84
83
 
85
- it "returns an empty array" do
86
- expect(relations).to be_empty
84
+ it "returns an array of all relations" do
85
+ expect(relations.size).to eq(3)
86
+ end
87
87
  end
88
88
  end
89
89
 
90
- context "when no argument supplied" do
90
+ context "when no relations exist for the macros" do
91
91
 
92
92
  let(:relations) do
93
- klass.reflect_on_all_associations
93
+ klass.reflect_on_all_associations(:embeds_one)
94
94
  end
95
95
 
96
96
  it "returns an empty array" do
@@ -227,6 +227,18 @@ describe Mongoid::Scopable do
227
227
 
228
228
  context "when provided a criteria" do
229
229
 
230
+ context 'when a collation is defined on the criteria', if: collation_supported? do
231
+
232
+ before do
233
+ Band.scope(:tests, ->{ Band.where(name: 'TESTING').collation(locale: 'en_US', strength: 2) })
234
+ Band.create(name: 'testing')
235
+ end
236
+
237
+ it 'applies the collation' do
238
+ expect(Band.tests.first['name']).to eq('testing')
239
+ end
240
+ end
241
+
230
242
  context "when the lambda includes a geo_near query" do
231
243
 
232
244
  before do
data/spec/spec_helper.rb CHANGED
@@ -75,11 +75,20 @@ def testing_locally?
75
75
  !(ENV['CI'] == 'travis')
76
76
  end
77
77
 
78
+ def testing_replica_set?
79
+ Mongoid::Clients.default.cluster.replica_set?
80
+ end
81
+
78
82
  # Set the database that the spec suite connects to.
79
83
  Mongoid.configure do |config|
80
84
  config.load_configuration(CONFIG)
81
85
  end
82
86
 
87
+ def collation_supported?
88
+ Mongoid::Clients.default.cluster.next_primary.features.collation_enabled?
89
+ end
90
+ alias :decimal128_supported? :collation_supported?
91
+
83
92
  # Autoload every model for the test suite that sits in spec/app/models.
84
93
  Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
85
94
  name = File.basename(file, ".rb")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.5
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Durran Jordan
@@ -12,7 +12,7 @@ cert_chain:
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMRQwEgYDVQQDDAtkcml2
14
14
  ZXItcnVieTEVMBMGCgmSJomT8ixkARkWBTEwZ2VuMRMwEQYKCZImiZPyLGQBGRYD
15
- Y29tMB4XDTE1MTEwMzE0NTUwNFoXDTE2MTEwMjE0NTUwNFowQjEUMBIGA1UEAwwL
15
+ Y29tMB4XDTE2MTIwMTE0MDcxMloXDTE3MTIwMTE0MDcxMlowQjEUMBIGA1UEAwwL
16
16
  ZHJpdmVyLXJ1YnkxFTATBgoJkiaJk/IsZAEZFgUxMGdlbjETMBEGCgmSJomT8ixk
17
17
  ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFdSAa8fRm1
18
18
  bAM9za6Z0fAH4g02bqM1NGnw8zJQrE/PFrFfY6IFCT2AsLfOwr1maVm7iU1+kdVI
@@ -23,14 +23,14 @@ cert_chain:
23
23
  u8KAcPHm5KkCAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
24
24
  BBYEFFt3WbF+9JpUjAoj62cQBgNb8HzXMCAGA1UdEQQZMBeBFWRyaXZlci1ydWJ5
25
25
  QDEwZ2VuLmNvbTAgBgNVHRIEGTAXgRVkcml2ZXItcnVieUAxMGdlbi5jb20wDQYJ
26
- KoZIhvcNAQEFBQADggEBAMwy++EdX3KKnivddRt3S9et0WVYusH2PwDRX9o4REcF
27
- mNcAtKnhN8OQ+irEGVNrqJFiHhUmuMo+v9FWJ5OA0/gKRUfFJAWj4WfBi3sRCPxv
28
- 7Hmy3V7Cz+nLCdUl4uoe0bn6wY/zpX8tHCtcLBLCy2aQ0ijbDwA5TdlkV8q5vPId
29
- ZS0pBTqHap4VMl2F63o6+qWdqhvikKM1NVYkTxUmvRlDjKM5sQAph7JOAaWjA6Fh
30
- ZIvvwAhgCjVW5QCi2I1noxXLmtZ3XDawWu8kaGtu8giHXcwL3941m8hvFZ/Wr9Yi
31
- JvcXJt2a4/JvwnIs2hmKuyfhZmB9HEE5wQQaCMnnC14=
26
+ KoZIhvcNAQEFBQADggEBAKBDaVkycCUC1zMfpAkXIgWtji2Nr2ZygYQR53AgxOaE
27
+ 7nqxdh5Lh8pnfwa71/ucrZFJt+g/mEhen9lFNmcizvpP43Hh4rYf8j6T8Y+mQ6tr
28
+ sp5xWiv93DlLXGmas0hv9VRYDvV1vLFaG05FHOAZKdo6pD2t6jNyMSAn4fMHKctw
29
+ UoYN5FLt84jacRQF5nhy9gBhfgvA19LcjeMLQC11x3fykDLzCXF2wEe5Q5iYaWvb
30
+ cGiNQIiHBj/9/xHfOyOthBPUevTiVnuffarDr434z/LGLwYzgaG5EcJFvZqpvUpP
31
+ fGcAPtAZUMGLXwcOB1BJEFkDxUQIJiEpSmf4YzzZhEM=
32
32
  -----END CERTIFICATE-----
33
- date: 2016-10-19 00:00:00.000000000 Z
33
+ date: 2017-01-26 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: activemodel
@@ -64,30 +64,36 @@ dependencies:
64
64
  name: mongo
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 2.4.1
70
+ - - "<"
68
71
  - !ruby/object:Gem::Version
69
- version: '2.1'
72
+ version: 3.0.0
70
73
  type: :runtime
71
74
  prerelease: false
72
75
  version_requirements: !ruby/object:Gem::Requirement
73
76
  requirements:
74
- - - "~>"
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 2.4.1
80
+ - - "<"
75
81
  - !ruby/object:Gem::Version
76
- version: '2.1'
82
+ version: 3.0.0
77
83
  - !ruby/object:Gem::Dependency
78
84
  name: origin
79
85
  requirement: !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - "~>"
82
88
  - !ruby/object:Gem::Version
83
- version: '2.2'
89
+ version: '2.3'
84
90
  type: :runtime
85
91
  prerelease: false
86
92
  version_requirements: !ruby/object:Gem::Requirement
87
93
  requirements:
88
94
  - - "~>"
89
95
  - !ruby/object:Gem::Version
90
- version: '2.2'
96
+ version: '2.3'
91
97
  description: Mongoid is an ODM (Object Document Mapper) Framework for MongoDB, written
92
98
  in Ruby.
93
99
  email:
@@ -158,6 +164,7 @@ files:
158
164
  - lib/mongoid/errors/document_not_destroyed.rb
159
165
  - lib/mongoid/errors/document_not_found.rb
160
166
  - lib/mongoid/errors/eager_load.rb
167
+ - lib/mongoid/errors/in_memory_collation_not_supported.rb
161
168
  - lib/mongoid/errors/invalid_collection.rb
162
169
  - lib/mongoid/errors/invalid_config_option.rb
163
170
  - lib/mongoid/errors/invalid_field.rb
@@ -202,6 +209,7 @@ files:
202
209
  - lib/mongoid/extensions/boolean.rb
203
210
  - lib/mongoid/extensions/date.rb
204
211
  - lib/mongoid/extensions/date_time.rb
212
+ - lib/mongoid/extensions/decimal128.rb
205
213
  - lib/mongoid/extensions/false_class.rb
206
214
  - lib/mongoid/extensions/float.rb
207
215
  - lib/mongoid/extensions/hash.rb
@@ -651,6 +659,7 @@ files:
651
659
  - spec/mongoid/extensions/boolean_spec.rb
652
660
  - spec/mongoid/extensions/date_spec.rb
653
661
  - spec/mongoid/extensions/date_time_spec.rb
662
+ - spec/mongoid/extensions/decimal128_spec.rb
654
663
  - spec/mongoid/extensions/false_class_spec.rb
655
664
  - spec/mongoid/extensions/float_spec.rb
656
665
  - spec/mongoid/extensions/hash_spec.rb
@@ -812,7 +821,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
812
821
  version: 1.3.6
813
822
  requirements: []
814
823
  rubyforge_project: mongoid
815
- rubygems_version: 2.5.1
824
+ rubygems_version: 2.4.5.1
816
825
  signing_key:
817
826
  specification_version: 4
818
827
  summary: Elegant Persistence in Ruby for MongoDB.
@@ -1107,6 +1116,7 @@ test_files:
1107
1116
  - spec/mongoid/extensions/boolean_spec.rb
1108
1117
  - spec/mongoid/extensions/date_spec.rb
1109
1118
  - spec/mongoid/extensions/date_time_spec.rb
1119
+ - spec/mongoid/extensions/decimal128_spec.rb
1110
1120
  - spec/mongoid/extensions/false_class_spec.rb
1111
1121
  - spec/mongoid/extensions/float_spec.rb
1112
1122
  - spec/mongoid/extensions/hash_spec.rb
metadata.gz.sig CHANGED
Binary file