mongoid 2.0.0.alpha → 2.0.0.beta.5

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 (216) hide show
  1. data/lib/mongoid.rb +11 -5
  2. data/lib/mongoid/associations.rb +112 -107
  3. data/lib/mongoid/associations/belongs_to_related.rb +2 -3
  4. data/lib/mongoid/associations/embedded_in.rb +12 -4
  5. data/lib/mongoid/associations/{embed_many.rb → embeds_many.rb} +101 -32
  6. data/lib/mongoid/associations/{embed_one.rb → embeds_one.rb} +10 -10
  7. data/lib/mongoid/associations/has_many_related.rb +51 -5
  8. data/lib/mongoid/associations/has_one_related.rb +9 -5
  9. data/lib/mongoid/associations/meta_data.rb +2 -1
  10. data/lib/mongoid/associations/options.rb +15 -6
  11. data/lib/mongoid/associations/proxy.rb +14 -21
  12. data/lib/mongoid/attributes.rb +34 -13
  13. data/lib/mongoid/callbacks.rb +1 -2
  14. data/lib/mongoid/collection.rb +4 -3
  15. data/lib/mongoid/collections.rb +41 -0
  16. data/lib/mongoid/collections/master.rb +3 -2
  17. data/lib/mongoid/collections/slaves.rb +3 -2
  18. data/lib/mongoid/components.rb +4 -1
  19. data/lib/mongoid/config.rb +163 -13
  20. data/lib/mongoid/contexts.rb +1 -2
  21. data/lib/mongoid/contexts/enumerable.rb +1 -1
  22. data/lib/mongoid/contexts/mongo.rb +1 -1
  23. data/lib/mongoid/contexts/paging.rb +10 -2
  24. data/lib/mongoid/criteria.rb +13 -22
  25. data/lib/mongoid/criterion/exclusion.rb +3 -3
  26. data/lib/mongoid/criterion/inclusion.rb +17 -0
  27. data/lib/mongoid/criterion/optional.rb +1 -1
  28. data/lib/mongoid/dirty.rb +253 -0
  29. data/lib/mongoid/document.rb +40 -85
  30. data/lib/mongoid/errors.rb +48 -1
  31. data/lib/mongoid/extensions.rb +11 -9
  32. data/lib/mongoid/extensions/big_decimal/conversions.rb +2 -2
  33. data/lib/mongoid/extensions/boolean/conversions.rb +8 -2
  34. data/lib/mongoid/extensions/date/conversions.rb +13 -4
  35. data/lib/mongoid/extensions/datetime/conversions.rb +1 -6
  36. data/lib/mongoid/extensions/float/conversions.rb +5 -1
  37. data/lib/mongoid/extensions/hash/assimilation.rb +12 -3
  38. data/lib/mongoid/extensions/hash/conversions.rb +34 -4
  39. data/lib/mongoid/extensions/integer/conversions.rb +5 -1
  40. data/lib/mongoid/extensions/nil/assimilation.rb +4 -0
  41. data/lib/mongoid/extensions/object/conversions.rb +3 -3
  42. data/lib/mongoid/extensions/string/conversions.rb +1 -1
  43. data/lib/mongoid/extensions/symbol/inflections.rb +5 -2
  44. data/lib/mongoid/extensions/time_conversions.rb +35 -0
  45. data/lib/mongoid/factory.rb +2 -1
  46. data/lib/mongoid/field.rb +15 -2
  47. data/lib/mongoid/fields.rb +1 -1
  48. data/lib/mongoid/identity.rb +3 -3
  49. data/lib/mongoid/indexes.rb +3 -3
  50. data/lib/mongoid/matchers.rb +1 -2
  51. data/lib/mongoid/memoization.rb +8 -2
  52. data/lib/mongoid/named_scope.rb +0 -5
  53. data/lib/mongoid/observable.rb +1 -1
  54. data/lib/mongoid/paths.rb +30 -22
  55. data/lib/mongoid/persistence.rb +218 -0
  56. data/lib/mongoid/persistence/command.rb +39 -0
  57. data/lib/mongoid/persistence/insert.rb +47 -0
  58. data/lib/mongoid/persistence/insert_embedded.rb +38 -0
  59. data/lib/mongoid/persistence/remove.rb +39 -0
  60. data/lib/mongoid/persistence/remove_all.rb +37 -0
  61. data/lib/mongoid/persistence/remove_embedded.rb +50 -0
  62. data/lib/mongoid/persistence/update.rb +63 -0
  63. data/lib/mongoid/railtie.rb +53 -0
  64. data/lib/mongoid/railties/database.rake +37 -0
  65. data/lib/mongoid/timestamps.rb +2 -2
  66. data/lib/mongoid/validations.rb +2 -2
  67. data/lib/mongoid/validations/associated.rb +2 -2
  68. data/lib/mongoid/validations/uniqueness.rb +13 -2
  69. data/lib/mongoid/version.rb +4 -0
  70. data/lib/mongoid/versioning.rb +3 -2
  71. data/lib/rails/generators/mongoid/config/config_generator.rb +41 -0
  72. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +24 -0
  73. data/lib/rails/generators/mongoid/model/model_generator.rb +24 -0
  74. data/lib/rails/generators/mongoid/model/templates/model.rb +15 -0
  75. data/lib/rails/generators/mongoid_generator.rb +61 -0
  76. metadata +76 -301
  77. data/.gitignore +0 -6
  78. data/.watchr +0 -29
  79. data/Rakefile +0 -52
  80. data/VERSION +0 -1
  81. data/caliper.yml +0 -4
  82. data/lib/mongoid/collections/mimic.rb +0 -46
  83. data/lib/mongoid/commands.rb +0 -161
  84. data/lib/mongoid/commands/create.rb +0 -19
  85. data/lib/mongoid/commands/delete.rb +0 -16
  86. data/lib/mongoid/commands/delete_all.rb +0 -23
  87. data/lib/mongoid/commands/deletion.rb +0 -18
  88. data/lib/mongoid/commands/destroy.rb +0 -17
  89. data/lib/mongoid/commands/destroy_all.rb +0 -23
  90. data/lib/mongoid/commands/save.rb +0 -29
  91. data/lib/mongoid/extensions/time/conversions.rb +0 -18
  92. data/mongoid.gemspec +0 -408
  93. data/perf/benchmark.rb +0 -77
  94. data/spec/integration/mongoid/associations_spec.rb +0 -340
  95. data/spec/integration/mongoid/attributes_spec.rb +0 -22
  96. data/spec/integration/mongoid/commands_spec.rb +0 -227
  97. data/spec/integration/mongoid/contexts/enumerable_spec.rb +0 -33
  98. data/spec/integration/mongoid/criteria_spec.rb +0 -272
  99. data/spec/integration/mongoid/document_spec.rb +0 -650
  100. data/spec/integration/mongoid/extensions_spec.rb +0 -22
  101. data/spec/integration/mongoid/finders_spec.rb +0 -119
  102. data/spec/integration/mongoid/inheritance_spec.rb +0 -137
  103. data/spec/integration/mongoid/named_scope_spec.rb +0 -46
  104. data/spec/models/address.rb +0 -39
  105. data/spec/models/animal.rb +0 -6
  106. data/spec/models/callbacks.rb +0 -18
  107. data/spec/models/comment.rb +0 -8
  108. data/spec/models/country_code.rb +0 -6
  109. data/spec/models/employer.rb +0 -5
  110. data/spec/models/game.rb +0 -7
  111. data/spec/models/inheritance.rb +0 -56
  112. data/spec/models/location.rb +0 -5
  113. data/spec/models/mixed_drink.rb +0 -4
  114. data/spec/models/name.rb +0 -13
  115. data/spec/models/namespacing.rb +0 -11
  116. data/spec/models/patient.rb +0 -4
  117. data/spec/models/person.rb +0 -99
  118. data/spec/models/pet.rb +0 -7
  119. data/spec/models/pet_owner.rb +0 -6
  120. data/spec/models/phone.rb +0 -7
  121. data/spec/models/post.rb +0 -15
  122. data/spec/models/translation.rb +0 -5
  123. data/spec/models/vet_visit.rb +0 -5
  124. data/spec/spec.opts +0 -3
  125. data/spec/spec_helper.rb +0 -31
  126. data/spec/unit/mongoid/associations/belongs_to_related_spec.rb +0 -145
  127. data/spec/unit/mongoid/associations/embed_many_spec.rb +0 -516
  128. data/spec/unit/mongoid/associations/embed_one_spec.rb +0 -282
  129. data/spec/unit/mongoid/associations/embedded_in_spec.rb +0 -193
  130. data/spec/unit/mongoid/associations/has_many_related_spec.rb +0 -418
  131. data/spec/unit/mongoid/associations/has_one_related_spec.rb +0 -179
  132. data/spec/unit/mongoid/associations/meta_data_spec.rb +0 -88
  133. data/spec/unit/mongoid/associations/options_spec.rb +0 -192
  134. data/spec/unit/mongoid/associations_spec.rb +0 -595
  135. data/spec/unit/mongoid/attributes_spec.rb +0 -507
  136. data/spec/unit/mongoid/callbacks_spec.rb +0 -55
  137. data/spec/unit/mongoid/collection_spec.rb +0 -187
  138. data/spec/unit/mongoid/collections/cyclic_iterator_spec.rb +0 -75
  139. data/spec/unit/mongoid/collections/master_spec.rb +0 -41
  140. data/spec/unit/mongoid/collections/mimic_spec.rb +0 -43
  141. data/spec/unit/mongoid/collections/slaves_spec.rb +0 -81
  142. data/spec/unit/mongoid/commands/create_spec.rb +0 -31
  143. data/spec/unit/mongoid/commands/delete_all_spec.rb +0 -58
  144. data/spec/unit/mongoid/commands/delete_spec.rb +0 -38
  145. data/spec/unit/mongoid/commands/destroy_all_spec.rb +0 -21
  146. data/spec/unit/mongoid/commands/destroy_spec.rb +0 -51
  147. data/spec/unit/mongoid/commands/save_spec.rb +0 -107
  148. data/spec/unit/mongoid/commands_spec.rb +0 -270
  149. data/spec/unit/mongoid/config_spec.rb +0 -172
  150. data/spec/unit/mongoid/contexts/enumerable_spec.rb +0 -421
  151. data/spec/unit/mongoid/contexts/mongo_spec.rb +0 -682
  152. data/spec/unit/mongoid/contexts_spec.rb +0 -25
  153. data/spec/unit/mongoid/criteria_spec.rb +0 -824
  154. data/spec/unit/mongoid/criterion/complex_spec.rb +0 -19
  155. data/spec/unit/mongoid/criterion/exclusion_spec.rb +0 -91
  156. data/spec/unit/mongoid/criterion/inclusion_spec.rb +0 -219
  157. data/spec/unit/mongoid/criterion/optional_spec.rb +0 -319
  158. data/spec/unit/mongoid/cursor_spec.rb +0 -74
  159. data/spec/unit/mongoid/deprecation_spec.rb +0 -24
  160. data/spec/unit/mongoid/document_spec.rb +0 -818
  161. data/spec/unit/mongoid/errors_spec.rb +0 -103
  162. data/spec/unit/mongoid/extensions/array/accessors_spec.rb +0 -50
  163. data/spec/unit/mongoid/extensions/array/assimilation_spec.rb +0 -24
  164. data/spec/unit/mongoid/extensions/array/conversions_spec.rb +0 -35
  165. data/spec/unit/mongoid/extensions/array/parentization_spec.rb +0 -20
  166. data/spec/unit/mongoid/extensions/big_decimal/conversions_spec.rb +0 -22
  167. data/spec/unit/mongoid/extensions/binary/conversions_spec.rb +0 -22
  168. data/spec/unit/mongoid/extensions/boolean/conversions_spec.rb +0 -49
  169. data/spec/unit/mongoid/extensions/date/conversions_spec.rb +0 -102
  170. data/spec/unit/mongoid/extensions/datetime/conversions_spec.rb +0 -67
  171. data/spec/unit/mongoid/extensions/float/conversions_spec.rb +0 -61
  172. data/spec/unit/mongoid/extensions/hash/accessors_spec.rb +0 -184
  173. data/spec/unit/mongoid/extensions/hash/assimilation_spec.rb +0 -46
  174. data/spec/unit/mongoid/extensions/hash/conversions_spec.rb +0 -21
  175. data/spec/unit/mongoid/extensions/hash/criteria_helpers_spec.rb +0 -17
  176. data/spec/unit/mongoid/extensions/hash/scoping_spec.rb +0 -14
  177. data/spec/unit/mongoid/extensions/integer/conversions_spec.rb +0 -61
  178. data/spec/unit/mongoid/extensions/nil/assimilation_spec.rb +0 -24
  179. data/spec/unit/mongoid/extensions/object/conversions_spec.rb +0 -57
  180. data/spec/unit/mongoid/extensions/proc/scoping_spec.rb +0 -34
  181. data/spec/unit/mongoid/extensions/string/conversions_spec.rb +0 -17
  182. data/spec/unit/mongoid/extensions/string/inflections_spec.rb +0 -208
  183. data/spec/unit/mongoid/extensions/symbol/inflections_spec.rb +0 -91
  184. data/spec/unit/mongoid/extensions/time/conversions_spec.rb +0 -70
  185. data/spec/unit/mongoid/extras_spec.rb +0 -102
  186. data/spec/unit/mongoid/factory_spec.rb +0 -31
  187. data/spec/unit/mongoid/field_spec.rb +0 -143
  188. data/spec/unit/mongoid/fields_spec.rb +0 -181
  189. data/spec/unit/mongoid/finders_spec.rb +0 -404
  190. data/spec/unit/mongoid/identity_spec.rb +0 -109
  191. data/spec/unit/mongoid/indexes_spec.rb +0 -93
  192. data/spec/unit/mongoid/javascript_spec.rb +0 -48
  193. data/spec/unit/mongoid/matchers/all_spec.rb +0 -27
  194. data/spec/unit/mongoid/matchers/default_spec.rb +0 -27
  195. data/spec/unit/mongoid/matchers/exists_spec.rb +0 -56
  196. data/spec/unit/mongoid/matchers/gt_spec.rb +0 -39
  197. data/spec/unit/mongoid/matchers/gte_spec.rb +0 -49
  198. data/spec/unit/mongoid/matchers/in_spec.rb +0 -27
  199. data/spec/unit/mongoid/matchers/lt_spec.rb +0 -39
  200. data/spec/unit/mongoid/matchers/lte_spec.rb +0 -49
  201. data/spec/unit/mongoid/matchers/ne_spec.rb +0 -27
  202. data/spec/unit/mongoid/matchers/nin_spec.rb +0 -27
  203. data/spec/unit/mongoid/matchers/size_spec.rb +0 -27
  204. data/spec/unit/mongoid/matchers_spec.rb +0 -329
  205. data/spec/unit/mongoid/memoization_spec.rb +0 -75
  206. data/spec/unit/mongoid/named_scope_spec.rb +0 -123
  207. data/spec/unit/mongoid/observable_spec.rb +0 -46
  208. data/spec/unit/mongoid/paths_spec.rb +0 -124
  209. data/spec/unit/mongoid/scope_spec.rb +0 -240
  210. data/spec/unit/mongoid/state_spec.rb +0 -83
  211. data/spec/unit/mongoid/timestamps_spec.rb +0 -25
  212. data/spec/unit/mongoid/validations/associated_spec.rb +0 -103
  213. data/spec/unit/mongoid/validations/uniqueness_spec.rb +0 -47
  214. data/spec/unit/mongoid/validations_spec.rb +0 -190
  215. data/spec/unit/mongoid/versioning_spec.rb +0 -41
  216. data/spec/unit/mongoid_spec.rb +0 -46
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers::In do
4
-
5
- let(:matcher) { Mongoid::Matchers::In.new("first") }
6
-
7
- describe "#matches?" do
8
-
9
- context "when the values includes the attribute" do
10
-
11
- it "returns true" do
12
- matcher.matches?("$in" => ["first", "second"]).should be_true
13
- end
14
-
15
- end
16
-
17
- context "when the values dont include the atribute" do
18
-
19
- it "returns false" do
20
- matcher.matches?("$in" => ["third"]).should be_false
21
- end
22
-
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,39 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers::Lt do
4
-
5
- describe "#matches?" do
6
-
7
- context "when the value is larger" do
8
-
9
- let(:matcher) { Mongoid::Matchers::Lt.new(5) }
10
-
11
- it "returns false" do
12
- matcher.matches?("$lt" => 3).should be_false
13
- end
14
-
15
- end
16
-
17
- context "when the value is smaller" do
18
-
19
- let(:matcher) { Mongoid::Matchers::Lt.new(5) }
20
-
21
- it "returns true" do
22
- matcher.matches?("$lt" => 10).should be_true
23
- end
24
-
25
- end
26
-
27
- context "when the value is nil" do
28
-
29
- let(:matcher) { Mongoid::Matchers::Lt.new(nil) }
30
-
31
- it "returns false" do
32
- matcher.matches?("$lt" => 5).should be_false
33
- end
34
-
35
- end
36
-
37
- end
38
-
39
- end
@@ -1,49 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers::Lte do
4
-
5
- describe "#matches?" do
6
-
7
- context "when the value is larger" do
8
-
9
- let(:matcher) { Mongoid::Matchers::Lte.new(5) }
10
-
11
- it "returns false" do
12
- matcher.matches?("$lte" => 3).should be_false
13
- end
14
-
15
- end
16
-
17
- context "when the value is smaller" do
18
-
19
- let(:matcher) { Mongoid::Matchers::Lte.new(5) }
20
-
21
- it "returns true" do
22
- matcher.matches?("$lte" => 10).should be_true
23
- end
24
-
25
- end
26
-
27
- context "when the value is equal" do
28
-
29
- let(:matcher) { Mongoid::Matchers::Lte.new(5) }
30
-
31
- it "returns true" do
32
- matcher.matches?("$lte" => 5).should be_true
33
- end
34
-
35
- end
36
-
37
- context "when the value is nil" do
38
-
39
- let(:matcher) { Mongoid::Matchers::Lte.new(nil) }
40
-
41
- it "returns false" do
42
- matcher.matches?("$lte" => 5).should be_false
43
- end
44
-
45
- end
46
-
47
- end
48
-
49
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers::Ne do
4
-
5
- let(:matcher) { Mongoid::Matchers::Ne.new("first") }
6
-
7
- describe "#matches?" do
8
-
9
- context "when the values are not equal" do
10
-
11
- it "returns true" do
12
- matcher.matches?("$ne" => "second").should be_true
13
- end
14
-
15
- end
16
-
17
- context "when the values are equal" do
18
-
19
- it "returns false" do
20
- matcher.matches?("$ne" => "first").should be_false
21
- end
22
-
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers::Nin do
4
-
5
- let(:matcher) { Mongoid::Matchers::Nin.new("first") }
6
-
7
- describe "#matches?" do
8
-
9
- context "when the values do not contain the attribute" do
10
-
11
- it "returns true" do
12
- matcher.matches?("$nin" => ["second", "third"]).should be_true
13
- end
14
-
15
- end
16
-
17
- context "when the values contain the attribute" do
18
-
19
- it "returns false" do
20
- matcher.matches?("$nin" => ["first"]).should be_false
21
- end
22
-
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,27 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers::Size do
4
-
5
- let(:matcher) { Mongoid::Matchers::Size.new(["first", "second"]) }
6
-
7
- describe "#matches?" do
8
-
9
- context "when the attribute is the same size" do
10
-
11
- it "returns true" do
12
- matcher.matches?("$size" => 2).should be_true
13
- end
14
-
15
- end
16
-
17
- context "when the attribute is not the same size" do
18
-
19
- it "returns false" do
20
- matcher.matches?("$size" => 5).should be_false
21
- end
22
-
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,329 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Mongoid::Matchers do
4
-
5
- describe "#matches?" do
6
-
7
- context "when performing simple matching" do
8
-
9
- before do
10
- @document = Address.new(:street => "Clarkenwell Road")
11
- end
12
-
13
- context "when the attributes match" do
14
-
15
- before do
16
- @selector = { :street => "Clarkenwell Road" }
17
- end
18
-
19
- it "returns true" do
20
- @document.matches?(@selector).should be_true
21
- end
22
-
23
- end
24
-
25
- context "when the attributes dont match" do
26
-
27
- before do
28
- @selector = { :street => "Broadway Ave" }
29
- end
30
-
31
- it "returns false" do
32
- @document.matches?(@selector).should be_false
33
- end
34
-
35
- end
36
-
37
- end
38
-
39
- context "when performing complex matching" do
40
-
41
- before do
42
- @document = Address.new(:services => ["first", "second"], :number => 100)
43
- end
44
-
45
- context "with an $all selector" do
46
-
47
- context "when the attributes match" do
48
-
49
- before do
50
- @selector = { :services => { "$all" => [ "first", "second" ] } }
51
- end
52
-
53
- it "returns true" do
54
- @document.matches?(@selector).should be_true
55
- end
56
-
57
- end
58
-
59
- context "when the attributes do not match" do
60
-
61
- before do
62
- @selector = { :services => { "$all" => [ "first" ] } }
63
- end
64
-
65
- it "returns false" do
66
- @document.matches?(@selector).should be_false
67
- end
68
-
69
- end
70
-
71
- end
72
-
73
- context "with an $exists selector" do
74
-
75
- context "when the attributes match" do
76
-
77
- before do
78
- @selector = { :services => { "$exists" => true } }
79
- end
80
-
81
- it "returns true" do
82
- @document.matches?(@selector).should be_true
83
- end
84
-
85
- end
86
-
87
- context "when the attributes do not match" do
88
-
89
- before do
90
- @selector = { :services => { "$exists" => false } }
91
- end
92
-
93
- it "returns false" do
94
- @document.matches?(@selector).should be_false
95
- end
96
-
97
- end
98
-
99
- end
100
-
101
- context "with a $gt selector" do
102
-
103
- context "when the attributes match" do
104
-
105
- before do
106
- @selector = { :number => { "$gt" => 50 } }
107
- end
108
-
109
- it "returns true" do
110
- @document.matches?(@selector).should be_true
111
- end
112
-
113
- end
114
-
115
- context "when the attributes do not match" do
116
-
117
- before do
118
- @selector = { :number => { "$gt" => 200 } }
119
- end
120
-
121
- it "returns false" do
122
- @document.matches?(@selector).should be_false
123
- end
124
-
125
- end
126
-
127
- end
128
-
129
- context "with a $gte selector" do
130
-
131
- context "when the attributes match" do
132
-
133
- before do
134
- @selector = { :number => { "$gte" => 100 } }
135
- end
136
-
137
- it "returns true" do
138
- @document.matches?(@selector).should be_true
139
- end
140
-
141
- end
142
-
143
- context "when the attributes do not match" do
144
-
145
- before do
146
- @selector = { :number => { "$gte" => 200 } }
147
- end
148
-
149
- it "returns false" do
150
- @document.matches?(@selector).should be_false
151
- end
152
-
153
- end
154
-
155
- end
156
-
157
- context "with an $in selector" do
158
-
159
- context "when the attributes match" do
160
-
161
- before do
162
- @selector = { :number => { "$in" => [ 100, 200 ] } }
163
- end
164
-
165
- it "returns true" do
166
- @document.matches?(@selector).should be_true
167
- end
168
-
169
- end
170
-
171
- context "when the attributes do not match" do
172
-
173
- before do
174
- @selector = { :number => { "$in" => [ 200, 300 ] } }
175
- end
176
-
177
- it "returns false" do
178
- @document.matches?(@selector).should be_false
179
- end
180
-
181
- end
182
-
183
- end
184
-
185
- context "with a $lt selector" do
186
-
187
- context "when the attributes match" do
188
-
189
- before do
190
- @selector = { :number => { "$lt" => 200 } }
191
- end
192
-
193
- it "returns true" do
194
- @document.matches?(@selector).should be_true
195
- end
196
-
197
- end
198
-
199
- context "when the attributes do not match" do
200
-
201
- before do
202
- @selector = { :number => { "$lt" => 50 } }
203
- end
204
-
205
- it "returns false" do
206
- @document.matches?(@selector).should be_false
207
- end
208
-
209
- end
210
-
211
- end
212
-
213
- context "with a $lte selector" do
214
-
215
- context "when the attributes match" do
216
-
217
- before do
218
- @selector = { :number => { "$lte" => 200 } }
219
- end
220
-
221
- it "returns true" do
222
- @document.matches?(@selector).should be_true
223
- end
224
-
225
- end
226
-
227
- context "when the attributes do not match" do
228
-
229
- before do
230
- @selector = { :number => { "$lte" => 50 } }
231
- end
232
-
233
- it "returns false" do
234
- @document.matches?(@selector).should be_false
235
- end
236
-
237
- end
238
-
239
- end
240
-
241
- context "with an $ne selector" do
242
-
243
- context "when the attributes match" do
244
-
245
- before do
246
- @selector = { :number => { "$ne" => 200 } }
247
- end
248
-
249
- it "returns true" do
250
- @document.matches?(@selector).should be_true
251
- end
252
-
253
- end
254
-
255
- context "when the attributes do not match" do
256
-
257
- before do
258
- @selector = { :number => { "$ne" => 100 } }
259
- end
260
-
261
- it "returns false" do
262
- @document.matches?(@selector).should be_false
263
- end
264
-
265
- end
266
-
267
- end
268
-
269
- context "with a $nin selector" do
270
-
271
- context "when the attributes match" do
272
-
273
- before do
274
- @selector = { :number => { "$nin" => [ 1, 2, 3 ] } }
275
- end
276
-
277
- it "returns true" do
278
- @document.matches?(@selector).should be_true
279
- end
280
-
281
- end
282
-
283
- context "when the attributes do not match" do
284
-
285
- before do
286
- @selector = { :number => { "$nin" => [ 100 ] } }
287
- end
288
-
289
- it "returns false" do
290
- @document.matches?(@selector).should be_false
291
- end
292
-
293
- end
294
-
295
- end
296
-
297
- context "with a $size selector" do
298
-
299
- context "when the attributes match" do
300
-
301
- before do
302
- @selector = { :services => { "$size" => 2 } }
303
- end
304
-
305
- it "returns true" do
306
- @document.matches?(@selector).should be_true
307
- end
308
-
309
- end
310
-
311
- context "when the attributes do not match" do
312
-
313
- before do
314
- @selector = { :services => { "$size" => 5 } }
315
- end
316
-
317
- it "returns false" do
318
- @document.matches?(@selector).should be_false
319
- end
320
-
321
- end
322
-
323
- end
324
-
325
- end
326
-
327
- end
328
-
329
- end