mongoid 7.2.0.rc1 → 7.3.0

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 (214) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Rakefile +45 -10
  5. data/lib/config/locales/en.yml +2 -2
  6. data/lib/mongoid/association/accessors.rb +1 -1
  7. data/lib/mongoid/association/constrainable.rb +1 -1
  8. data/lib/mongoid/association/depending.rb +4 -4
  9. data/lib/mongoid/association/embedded/batchable.rb +1 -1
  10. data/lib/mongoid/association/embedded/embedded_in.rb +1 -1
  11. data/lib/mongoid/association/embedded/embeds_many/proxy.rb +10 -3
  12. data/lib/mongoid/association/nested/many.rb +1 -1
  13. data/lib/mongoid/association/nested/one.rb +4 -2
  14. data/lib/mongoid/association/proxy.rb +6 -1
  15. data/lib/mongoid/association/referenced/auto_save.rb +2 -2
  16. data/lib/mongoid/association/referenced/has_many/enumerable.rb +493 -495
  17. data/lib/mongoid/association/referenced/has_many/proxy.rb +2 -2
  18. data/lib/mongoid/association/referenced/has_one/buildable.rb +8 -0
  19. data/lib/mongoid/association/referenced/has_one/nested_builder.rb +2 -2
  20. data/lib/mongoid/association/referenced/has_one/proxy.rb +6 -1
  21. data/lib/mongoid/attributes.rb +32 -14
  22. data/lib/mongoid/attributes/projector.rb +120 -0
  23. data/lib/mongoid/cacheable.rb +2 -2
  24. data/lib/mongoid/clients.rb +1 -1
  25. data/lib/mongoid/clients/factory.rb +22 -8
  26. data/lib/mongoid/config.rb +19 -2
  27. data/lib/mongoid/contextual/aggregable/mongo.rb +10 -8
  28. data/lib/mongoid/copyable.rb +6 -2
  29. data/lib/mongoid/criteria.rb +4 -5
  30. data/lib/mongoid/criteria/findable.rb +1 -1
  31. data/lib/mongoid/criteria/queryable/expandable.rb +0 -24
  32. data/lib/mongoid/criteria/queryable/extensions.rb +0 -4
  33. data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -1
  34. data/lib/mongoid/criteria/queryable/mergeable.rb +46 -20
  35. data/lib/mongoid/criteria/queryable/selectable.rb +8 -8
  36. data/lib/mongoid/criteria/queryable/selector.rb +0 -4
  37. data/lib/mongoid/document.rb +4 -17
  38. data/lib/mongoid/errors/delete_restriction.rb +8 -9
  39. data/lib/mongoid/evolvable.rb +1 -1
  40. data/lib/mongoid/extensions.rb +1 -0
  41. data/lib/mongoid/extensions/boolean.rb +1 -2
  42. data/lib/mongoid/extensions/false_class.rb +1 -1
  43. data/lib/mongoid/extensions/hash.rb +2 -2
  44. data/lib/mongoid/extensions/true_class.rb +1 -1
  45. data/lib/mongoid/fields.rb +46 -5
  46. data/lib/mongoid/inspectable.rb +1 -1
  47. data/lib/mongoid/interceptable.rb +3 -1
  48. data/lib/mongoid/matcher.rb +26 -43
  49. data/lib/mongoid/matcher/bits.rb +41 -0
  50. data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
  51. data/lib/mongoid/matcher/bits_all_set.rb +20 -0
  52. data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
  53. data/lib/mongoid/matcher/bits_any_set.rb +20 -0
  54. data/lib/mongoid/matcher/elem_match.rb +2 -1
  55. data/lib/mongoid/matcher/expression.rb +9 -14
  56. data/lib/mongoid/matcher/field_expression.rb +4 -5
  57. data/lib/mongoid/matcher/field_operator.rb +13 -11
  58. data/lib/mongoid/matcher/mod.rb +17 -0
  59. data/lib/mongoid/matcher/type.rb +99 -0
  60. data/lib/mongoid/persistable/deletable.rb +1 -2
  61. data/lib/mongoid/persistable/destroyable.rb +8 -2
  62. data/lib/mongoid/persistable/updatable.rb +27 -2
  63. data/lib/mongoid/query_cache.rb +35 -29
  64. data/lib/mongoid/reloadable.rb +5 -0
  65. data/lib/mongoid/selectable.rb +5 -7
  66. data/lib/mongoid/shardable.rb +21 -5
  67. data/lib/mongoid/stringified_symbol.rb +53 -0
  68. data/lib/mongoid/touchable.rb +23 -4
  69. data/lib/mongoid/version.rb +1 -1
  70. data/lib/rails/generators/mongoid/config/config_generator.rb +8 -1
  71. data/spec/README.md +19 -4
  72. data/spec/integration/app_spec.rb +175 -88
  73. data/spec/integration/associations/embeds_many_spec.rb +68 -0
  74. data/spec/integration/associations/embeds_one_spec.rb +24 -0
  75. data/spec/integration/associations/has_many_spec.rb +60 -0
  76. data/spec/integration/associations/has_one_spec.rb +108 -0
  77. data/spec/integration/callbacks_models.rb +49 -0
  78. data/spec/integration/callbacks_spec.rb +216 -0
  79. data/spec/integration/criteria/date_field_spec.rb +1 -1
  80. data/spec/integration/document_spec.rb +30 -0
  81. data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
  82. data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
  83. data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
  84. data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
  85. data/spec/integration/matcher_operator_data/comment.yml +22 -0
  86. data/spec/integration/matcher_operator_data/elem_match.yml +46 -0
  87. data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
  88. data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
  89. data/spec/integration/matcher_operator_data/implicit_traversal.yml +96 -0
  90. data/spec/integration/matcher_operator_data/in.yml +16 -0
  91. data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
  92. data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
  93. data/spec/integration/matcher_operator_data/mod.yml +55 -0
  94. data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
  95. data/spec/integration/matcher_operator_data/type.yml +70 -0
  96. data/spec/integration/matcher_operator_data/type_array.yml +16 -0
  97. data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
  98. data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
  99. data/spec/integration/matcher_operator_data/type_code.yml +26 -0
  100. data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
  101. data/spec/integration/matcher_operator_data/type_date.yml +39 -0
  102. data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
  103. data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
  104. data/spec/integration/matcher_operator_data/type_double.yml +15 -0
  105. data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
  106. data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
  107. data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
  108. data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
  109. data/spec/integration/matcher_operator_data/type_null.yml +23 -0
  110. data/spec/integration/matcher_operator_data/type_object.yml +23 -0
  111. data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
  112. data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
  113. data/spec/integration/matcher_operator_data/type_string.yml +15 -0
  114. data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
  115. data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
  116. data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
  117. data/spec/integration/stringified_symbol_field_spec.rb +190 -0
  118. data/spec/lite_spec_helper.rb +9 -7
  119. data/spec/mongoid/association/depending_spec.rb +391 -352
  120. data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +50 -0
  121. data/spec/mongoid/association/nested/one_spec.rb +18 -14
  122. data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +25 -8
  123. data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +1 -1
  124. data/spec/mongoid/association/referenced/has_many/binding_spec.rb +1 -1
  125. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +1 -1
  126. data/spec/mongoid/association/referenced/has_many_models.rb +12 -0
  127. data/spec/mongoid/association/referenced/has_one_models.rb +20 -0
  128. data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
  129. data/spec/mongoid/atomic/paths_spec.rb +105 -12
  130. data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
  131. data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
  132. data/spec/mongoid/attributes/projector_spec.rb +41 -0
  133. data/spec/mongoid/attributes_spec.rb +333 -0
  134. data/spec/mongoid/clients/factory_spec.rb +48 -0
  135. data/spec/mongoid/config_spec.rb +32 -0
  136. data/spec/mongoid/contextual/atomic_spec.rb +17 -4
  137. data/spec/mongoid/contextual/mongo_spec.rb +2 -2
  138. data/spec/mongoid/copyable_spec.rb +44 -17
  139. data/spec/mongoid/copyable_spec_models.rb +14 -0
  140. data/spec/mongoid/criteria/modifiable_spec.rb +1 -1
  141. data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -73
  142. data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +1 -1
  143. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +105 -7
  144. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +265 -24
  145. data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +39 -0
  146. data/spec/mongoid/criteria/queryable/selectable_spec.rb +1 -565
  147. data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +590 -0
  148. data/spec/mongoid/criteria_projection_spec.rb +411 -0
  149. data/spec/mongoid/criteria_spec.rb +0 -275
  150. data/spec/mongoid/document_fields_spec.rb +26 -0
  151. data/spec/mongoid/document_spec.rb +13 -13
  152. data/spec/mongoid/equality_spec.rb +0 -1
  153. data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
  154. data/spec/mongoid/extensions/false_class_spec.rb +1 -1
  155. data/spec/mongoid/extensions/string_spec.rb +5 -5
  156. data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
  157. data/spec/mongoid/extensions/true_class_spec.rb +1 -1
  158. data/spec/mongoid/fields/localized_spec.rb +4 -4
  159. data/spec/mongoid/fields_spec.rb +4 -4
  160. data/spec/mongoid/inspectable_spec.rb +12 -4
  161. data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
  162. data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +68 -88
  163. data/spec/mongoid/matcher/extract_attribute_spec.rb +3 -13
  164. data/spec/mongoid/persistable/deletable_spec.rb +175 -1
  165. data/spec/mongoid/persistable/destroyable_spec.rb +191 -3
  166. data/spec/mongoid/persistable/savable_spec.rb +3 -5
  167. data/spec/mongoid/persistable/settable_spec.rb +30 -0
  168. data/spec/mongoid/persistable/upsertable_spec.rb +1 -1
  169. data/spec/mongoid/query_cache_middleware_spec.rb +8 -0
  170. data/spec/mongoid/reloadable_spec.rb +18 -1
  171. data/spec/mongoid/shardable_spec.rb +44 -0
  172. data/spec/mongoid/touchable_spec.rb +104 -16
  173. data/spec/mongoid/touchable_spec_models.rb +52 -0
  174. data/spec/mongoid/validatable_spec.rb +1 -1
  175. data/spec/shared/LICENSE +20 -0
  176. data/spec/shared/bin/get-mongodb-download-url +17 -0
  177. data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
  178. data/spec/shared/lib/mrss/cluster_config.rb +221 -0
  179. data/spec/shared/lib/mrss/constraints.rb +354 -0
  180. data/spec/shared/lib/mrss/docker_runner.rb +265 -0
  181. data/spec/shared/lib/mrss/lite_constraints.rb +191 -0
  182. data/spec/shared/lib/mrss/server_version_registry.rb +115 -0
  183. data/spec/shared/lib/mrss/spec_organizer.rb +162 -0
  184. data/spec/shared/lib/mrss/utils.rb +15 -0
  185. data/spec/shared/share/Dockerfile.erb +231 -0
  186. data/spec/shared/shlib/distro.sh +73 -0
  187. data/spec/shared/shlib/server.sh +290 -0
  188. data/spec/shared/shlib/set_env.sh +128 -0
  189. data/spec/spec_helper.rb +7 -1
  190. data/spec/support/client_registry.rb +9 -0
  191. data/spec/support/constraints.rb +0 -226
  192. data/spec/support/models/bolt.rb +8 -0
  193. data/spec/support/models/customer.rb +11 -0
  194. data/spec/support/models/customer_address.rb +12 -0
  195. data/spec/support/models/dictionary.rb +6 -0
  196. data/spec/support/models/hole.rb +13 -0
  197. data/spec/support/models/mop.rb +9 -0
  198. data/spec/support/models/nut.rb +8 -0
  199. data/spec/support/models/order.rb +11 -0
  200. data/spec/support/models/person.rb +8 -0
  201. data/spec/support/models/sealer.rb +8 -0
  202. data/spec/support/models/series.rb +1 -0
  203. data/spec/support/models/shirt.rb +12 -0
  204. data/spec/support/models/spacer.rb +8 -0
  205. data/spec/support/models/threadlocker.rb +8 -0
  206. data/spec/support/models/washer.rb +8 -0
  207. data/spec/support/models/wiki_page.rb +1 -0
  208. data/spec/support/spec_config.rb +8 -0
  209. metadata +655 -507
  210. metadata.gz.sig +0 -0
  211. data/spec/support/child_process_helper.rb +0 -79
  212. data/spec/support/cluster_config.rb +0 -158
  213. data/spec/support/lite_constraints.rb +0 -22
  214. data/spec/support/spec_organizer.rb +0 -130
@@ -12,7 +12,7 @@ describe 'Queries on Date fields' do
12
12
 
13
13
  shared_examples 'converts to beginning of day in UTC' do
14
14
  it 'converts to beginning of day in UTC' do
15
- selector['founded'].should == arg.dup.beginning_of_day.utc.beginning_of_day
15
+ selector['founded'].should == Time.utc(arg.year, arg.month, arg.day)
16
16
  end
17
17
  end
18
18
 
@@ -19,4 +19,34 @@ describe Mongoid::Document do
19
19
  DelegatingPatient.default_client.should be Mongoid.default_client
20
20
  end
21
21
  end
22
+
23
+ context 'when id is unaliased' do
24
+ it 'persists separate id and _id values' do
25
+ shirt = Shirt.create!(id: 'hello', _id: 'foo')
26
+ shirt = Shirt.find(shirt._id)
27
+ shirt.id.should == 'hello'
28
+ shirt._id.should == 'foo'
29
+ end
30
+ end
31
+
32
+ describe '#reload' do
33
+ context 'when changing shard key value' do
34
+ require_topology :sharded
35
+
36
+ let(:profile) do
37
+ # Profile shard_key :name
38
+ Profile.create!(name: "Alice")
39
+ end
40
+
41
+ it "successfully reloads the document after saving an update to the sharded field" do
42
+ expect(profile.name).to eq("Alice")
43
+ profile.name = "Bob"
44
+ profile.save!
45
+
46
+ profile.reload
47
+
48
+ expect(profile.name).to eq("Bob")
49
+ end
50
+ end
51
+ end
22
52
  end
@@ -0,0 +1,159 @@
1
+ - name: existing field - matches with int
2
+ document:
3
+ a: 20
4
+ binaryValueofA: "00010100"
5
+ query:
6
+ a:
7
+ $bitsAllClear: 35
8
+ matches: true
9
+ min_server_version: 3.2
10
+
11
+ - name: existing field - does not match with int
12
+ document:
13
+ a: 20
14
+ binaryValueofA: "00010100"
15
+ query:
16
+ a:
17
+ $bitsAllClear: 24
18
+ matches: false
19
+ min_server_version: 3.2
20
+
21
+ - name: existing field - matches with binData
22
+ document:
23
+ a: 20
24
+ binaryValueofA: "00010100"
25
+ query:
26
+ a:
27
+ $bitsAllClear: !ruby/object:BSON::Binary
28
+ data: !binary |-
29
+ IW==
30
+ type: :generic
31
+ matches: true
32
+ min_server_version: 3.2
33
+
34
+ - name: existing field - does not match with binData
35
+ document:
36
+ a: 21
37
+ binaryValueofA: "00010101"
38
+ query:
39
+ a:
40
+ $bitsAllClear: !ruby/object:BSON::Binary
41
+ data: !binary |-
42
+ IW==
43
+ type: :generic
44
+ matches: false
45
+ min_server_version: 3.2
46
+
47
+ - name: existing binData field matches
48
+ document:
49
+ a: !ruby/object:BSON::Binary
50
+ data: !binary |-
51
+ IW==
52
+ type: :generic
53
+ query:
54
+ a:
55
+ $bitsAllClear: 20
56
+ matches: true
57
+ min_server_version: 3.2
58
+
59
+ - name: existing binData field does not match
60
+ document:
61
+ a: !ruby/object:BSON::Binary
62
+ data: !binary |-
63
+ IW==
64
+ type: :generic
65
+ query:
66
+ a:
67
+ $bitsAllClear: 15
68
+ matches: false
69
+ min_server_version: 3.2
70
+
71
+ - name: existing field - matches with array
72
+ document:
73
+ a: 20
74
+ binaryValueofA: "00010100"
75
+ query:
76
+ a:
77
+ $bitsAllClear: [0, 3]
78
+ matches: true
79
+ min_server_version: 3.2
80
+
81
+ - name: existing field - does not match with array
82
+ document:
83
+ a: 20
84
+ binaryValueofA: "00010100"
85
+ query:
86
+ a:
87
+ $bitsAllClear: [0, 2]
88
+ matches: false
89
+ min_server_version: 3.2
90
+
91
+ - name: float condition representable as an integer
92
+ document:
93
+ a: 20
94
+ binaryValueofA: "00010100"
95
+ query:
96
+ a:
97
+ $bitsAllClear: 35.0
98
+ matches: true
99
+ min_server_version: 3.2
100
+
101
+ - name: float condition not representable as an integer
102
+ document:
103
+ a: 20
104
+ binaryValueofA: "00010100"
105
+ query:
106
+ a:
107
+ $bitsAllClear: 35.1
108
+ error: true
109
+ min_server_version: 3.2
110
+
111
+ - name: string condition
112
+ document:
113
+ a: 54
114
+ binaryValueofA: "00110110"
115
+ query:
116
+ a:
117
+ $bitsAllClear: hello
118
+ error: true
119
+ min_server_version: 3.2
120
+
121
+ - name: empty array condition
122
+ document:
123
+ a: 20
124
+ binaryValueofA: "00010100"
125
+ query:
126
+ a:
127
+ $bitsAllClear: []
128
+ matches: true
129
+ min_server_version: 3.2
130
+
131
+ - name: integer 0 condition
132
+ document:
133
+ a: 20
134
+ binaryValueofA: "00010100"
135
+ query:
136
+ a:
137
+ $bitsAllClear: 0
138
+ matches: true
139
+ min_server_version: 3.2
140
+
141
+ - name: negative integer condition
142
+ document:
143
+ a: 54
144
+ binaryValueofA: "00110110"
145
+ query:
146
+ a:
147
+ $bitsAllClear: -1
148
+ error: true
149
+ min_server_version: 3.2
150
+
151
+ - name: negative float condition
152
+ document:
153
+ a: 54
154
+ binaryValueofA: "00110110"
155
+ query:
156
+ a:
157
+ $bitsAllClear: -1.0
158
+ error: true
159
+ min_server_version: 3.2
@@ -0,0 +1,159 @@
1
+ - name: existing field - matches with int
2
+ document:
3
+ a: 54
4
+ binaryValueofA: "00110110"
5
+ query:
6
+ a:
7
+ $bitsAllSet: 50
8
+ matches: true
9
+ min_server_version: 3.2
10
+
11
+ - name: existing field - does not match with int
12
+ document:
13
+ a: 52
14
+ binaryValueofA: "00110100"
15
+ query:
16
+ a:
17
+ $bitsAllSet: 50
18
+ matches: false
19
+ min_server_version: 3.2
20
+
21
+ - name: existing field - matches with binData
22
+ document:
23
+ a: 54
24
+ binaryValueofA: "00110110"
25
+ query:
26
+ a:
27
+ $bitsAllSet: !ruby/object:BSON::Binary
28
+ data: !binary |-
29
+ Ng==
30
+ type: :generic
31
+ matches: true
32
+ min_server_version: 3.2
33
+
34
+ - name: existing field - does not match with binData
35
+ document:
36
+ a: 21
37
+ binaryValueofA: "00010101"
38
+ query:
39
+ a:
40
+ $bitsAllSet: !ruby/object:BSON::Binary
41
+ data: !binary |-
42
+ MC==
43
+ type: :generic
44
+ matches: false
45
+ min_server_version: 3.2
46
+
47
+ - name: existing binData field matches
48
+ document:
49
+ a: !ruby/object:BSON::Binary
50
+ data: !binary |-
51
+ Ng==
52
+ type: :generic
53
+ query:
54
+ a:
55
+ $bitsAllSet: 48
56
+ matches: true
57
+ min_server_version: 3.2
58
+
59
+ - name: existing binData field does not match
60
+ document:
61
+ a: !ruby/object:BSON::Binary
62
+ data: !binary |-
63
+ MC==
64
+ type: :generic
65
+ query:
66
+ a:
67
+ $bitsAllSet: 54
68
+ matches: false
69
+ min_server_version: 3.2
70
+
71
+ - name: existing field - matches with array
72
+ document:
73
+ a: 20
74
+ binaryValueofA: "00010100"
75
+ query:
76
+ a:
77
+ $bitsAllSet: [2, 4]
78
+ matches: true
79
+ min_server_version: 3.2
80
+
81
+ - name: existing field - does not match with array
82
+ document:
83
+ a: 20
84
+ binaryValueofA: "00010100"
85
+ query:
86
+ a:
87
+ $bitsAllSet: [0, 3]
88
+ matches: false
89
+ min_server_version: 3.2
90
+
91
+ - name: float condition representable as an integer
92
+ document:
93
+ a: 54
94
+ binaryValueofA: "00110110"
95
+ query:
96
+ a:
97
+ $bitsAllSet: 50.0
98
+ matches: true
99
+ min_server_version: 3.2
100
+
101
+ - name: float condition not representable as an integer
102
+ document:
103
+ a: 54
104
+ binaryValueofA: "00110110"
105
+ query:
106
+ a:
107
+ $bitsAllSet: 50.1
108
+ error: true
109
+ min_server_version: 3.2
110
+
111
+ - name: string condition
112
+ document:
113
+ a: 54
114
+ binaryValueofA: "00110110"
115
+ query:
116
+ a:
117
+ $bitsAllSet: hello
118
+ error: true
119
+ min_server_version: 3.2
120
+
121
+ - name: empty array condition
122
+ document:
123
+ a: 54
124
+ binaryValueofA: "00110110"
125
+ query:
126
+ a:
127
+ $bitsAllSet: []
128
+ matches: true
129
+ min_server_version: 3.2
130
+
131
+ - name: integer 0 condition
132
+ document:
133
+ a: 54
134
+ binaryValueofA: "00110110"
135
+ query:
136
+ a:
137
+ $bitsAllSet: 0
138
+ matches: true
139
+ min_server_version: 3.2
140
+
141
+ - name: negative integer condition
142
+ document:
143
+ a: 54
144
+ binaryValueofA: "00110110"
145
+ query:
146
+ a:
147
+ $bitsAllSet: -1
148
+ error: true
149
+ min_server_version: 3.2
150
+
151
+ - name: negative float condition
152
+ document:
153
+ a: 54
154
+ binaryValueofA: "00110110"
155
+ query:
156
+ a:
157
+ $bitsAllSet: -1.0
158
+ error: true
159
+ min_server_version: 3.2
@@ -0,0 +1,159 @@
1
+ - name: existing field - matches with int
2
+ document:
3
+ a: 54
4
+ binaryValueofA: "00110110"
5
+ query:
6
+ a:
7
+ $bitsAnyClear: 35
8
+ matches: true
9
+ min_server_version: 3.2
10
+
11
+ - name: existing field - does not match with int
12
+ document:
13
+ a: 7
14
+ binaryValueofA: "00000011"
15
+ query:
16
+ a:
17
+ $bitsAnyClear: 35
18
+ matches: true
19
+ min_server_version: 3.2
20
+
21
+ - name: existing field - matches with binData
22
+ document:
23
+ a: 16
24
+ binaryValueofA: "00001000"
25
+ query:
26
+ a:
27
+ $bitsAnyClear: !ruby/object:BSON::Binary
28
+ data: !binary |-
29
+ IW==
30
+ type: :generic
31
+ matches: true
32
+ min_server_version: 3.2
33
+
34
+ - name: existing field - does not match with binData
35
+ document:
36
+ a: 55
37
+ binaryValueofA: "00110111"
38
+ query:
39
+ a:
40
+ $bitsAnyClear: !ruby/object:BSON::Binary
41
+ data: !binary |-
42
+ IW==
43
+ type: :generic
44
+ matches: false
45
+ min_server_version: 3.2
46
+
47
+ - name: existing binData field matches
48
+ document:
49
+ a: !ruby/object:BSON::Binary
50
+ data: !binary |-
51
+ FA==
52
+ type: :generic
53
+ query:
54
+ a:
55
+ $bitsAnyClear: 35
56
+ matches: true
57
+ min_server_version: 3.2
58
+
59
+ - name: existing binData field does not match
60
+ document:
61
+ a: !ruby/object:BSON::Binary
62
+ data: !binary |-
63
+ IW==
64
+ type: :generic
65
+ query:
66
+ a:
67
+ $bitsAnyClear: 32
68
+ matches: false
69
+ min_server_version: 3.2
70
+
71
+ - name: existing field - matches with array
72
+ document:
73
+ a: 20
74
+ binaryValueofA: "00010100"
75
+ query:
76
+ a:
77
+ $bitsAnyClear: [0, 2]
78
+ matches: true
79
+ min_server_version: 3.2
80
+
81
+ - name: existing field - does not match with array
82
+ document:
83
+ a: 20
84
+ binaryValueofA: "00010100"
85
+ query:
86
+ a:
87
+ $bitsAnyClear: [2, 4]
88
+ matches: false
89
+ min_server_version: 3.2
90
+
91
+ - name: float condition representable as an integer
92
+ document:
93
+ a: 54
94
+ binaryValueofA: "00110110"
95
+ query:
96
+ a:
97
+ $bitsAnyClear: 35.0
98
+ matches: true
99
+ min_server_version: 3.2
100
+
101
+ - name: float condition not representable as an integer
102
+ document:
103
+ a: 54
104
+ binaryValueofA: "00110110"
105
+ query:
106
+ a:
107
+ $bitsAnyClear: 35.1
108
+ error: true
109
+ min_server_version: 3.2
110
+
111
+ - name: string condition
112
+ document:
113
+ a: 54
114
+ binaryValueofA: "00110110"
115
+ query:
116
+ a:
117
+ $bitsAnyClear: 'hello'
118
+ error: true
119
+ min_server_version: 3.2
120
+
121
+ - name: empty array condition
122
+ document:
123
+ a: 54
124
+ binaryValueofA: "00110110"
125
+ query:
126
+ a:
127
+ $bitsAnyClear: []
128
+ matches: false
129
+ min_server_version: 3.2
130
+
131
+ - name: integer 0 condition
132
+ document:
133
+ a: 54
134
+ binaryValueofA: "00110110"
135
+ query:
136
+ a:
137
+ $bitsAnyClear: 0
138
+ matches: false
139
+ min_server_version: 3.2
140
+
141
+ - name: negative integer condition
142
+ document:
143
+ a: 54
144
+ binaryValueofA: "00110110"
145
+ query:
146
+ a:
147
+ $bitsAnyClear: -1
148
+ error: true
149
+ min_server_version: 3.2
150
+
151
+ - name: negative float condition
152
+ document:
153
+ a: 54
154
+ binaryValueofA: "00110110"
155
+ query:
156
+ a:
157
+ $bitsAnyClear: -1.0
158
+ error: true
159
+ min_server_version: 3.2