mongoid 4.0.0.alpha1 → 4.0.0.alpha2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/README.md +1 -1
- data/lib/config/locales/en.yml +4 -6
- data/lib/mongoid/attributes/processing.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/contextual/map_reduce.rb +3 -1
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/criteria.rb +25 -0
- data/lib/mongoid/extensions/array.rb +1 -1
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +3 -3
- data/lib/mongoid/extensions/object_id.rb +1 -1
- data/lib/mongoid/extensions/range.rb +1 -1
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +1 -1
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +1 -1
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/findable.rb +1 -0
- data/lib/mongoid/interceptable.rb +4 -2
- data/lib/mongoid/persistable.rb +4 -3
- data/lib/mongoid/relations/embedded/many.rb +1 -1
- data/lib/mongoid/relations/metadata.rb +8 -4
- data/lib/mongoid/relations/referenced/many.rb +1 -1
- data/lib/mongoid/relations/touchable.rb +1 -1
- data/lib/mongoid/scopable.rb +2 -26
- data/lib/mongoid/validatable/uniqueness.rb +13 -0
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +0 -4
- data/spec/app/models/acolyte.rb +1 -1
- data/spec/app/models/address.rb +2 -2
- data/spec/app/models/appointment.rb +1 -1
- data/spec/app/models/audio.rb +1 -1
- data/spec/app/models/dog.rb +1 -1
- data/spec/app/models/event.rb +1 -1
- data/spec/app/models/house.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/person.rb +3 -2
- data/spec/app/models/player.rb +2 -2
- data/spec/app/models/post.rb +3 -2
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/sound.rb +1 -1
- data/spec/app/models/symptom.rb +1 -1
- data/spec/app/models/tree.rb +2 -2
- data/spec/app/models/video.rb +1 -1
- data/spec/mongoid/attributes_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +3 -3
- data/spec/mongoid/contextual/mongo_spec.rb +14 -14
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/criteria/scopable_spec.rb +6 -6
- data/spec/mongoid/criteria_spec.rb +52 -96
- data/spec/mongoid/errors/invalid_scope_spec.rb +2 -2
- data/spec/mongoid/errors/mongoid_error_spec.rb +1 -1
- data/spec/mongoid/extensions/date_time_spec.rb +1 -1
- data/spec/mongoid/fields_spec.rb +6 -7
- data/spec/mongoid/findable_spec.rb +65 -0
- data/spec/mongoid/interceptable_spec.rb +11 -11
- data/spec/mongoid/persistable_spec.rb +4 -4
- data/spec/mongoid/relations/auto_save_spec.rb +1 -1
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +1 -1
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +14 -14
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +4 -4
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +2 -2
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +1 -1
- data/spec/mongoid/relations/cascading/delete_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/destroy_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +4 -4
- data/spec/mongoid/relations/eager_spec.rb +6 -6
- data/spec/mongoid/relations/embedded/many_spec.rb +36 -5
- data/spec/mongoid/relations/metadata_spec.rb +34 -15
- data/spec/mongoid/relations/referenced/many_spec.rb +19 -4
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +7 -7
- data/spec/mongoid/relations/referenced/one_spec.rb +1 -1
- data/spec/mongoid/relations/targets/enumerable_spec.rb +2 -2
- data/spec/mongoid/relations/touchable_spec.rb +17 -0
- data/spec/mongoid/scopable_spec.rb +17 -40
- data/spec/mongoid/sessions/options_spec.rb +1 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +1 -1
- data/spec/mongoid/timestamps/updated_spec.rb +1 -1
- data/spec/mongoid/timestamps_spec.rb +2 -2
- data/spec/mongoid/validatable/associated_spec.rb +4 -4
- data/spec/mongoid/validatable/length_spec.rb +7 -7
- data/spec/mongoid/validatable/presence_spec.rb +6 -6
- data/spec/mongoid/validatable/uniqueness_spec.rb +44 -3
- data/spec/rails/mongoid_spec.rb +20 -20
- data/spec/spec_helper.rb +1 -0
- metadata +55 -50
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Contextual::None do
|
|
4
|
+
|
|
5
|
+
describe "#==" do
|
|
6
|
+
|
|
7
|
+
let!(:band) do
|
|
8
|
+
Band.create(name: "Depeche Mode")
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:context) do
|
|
12
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when the other is a none" do
|
|
16
|
+
|
|
17
|
+
let(:other) do
|
|
18
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "returns true" do
|
|
22
|
+
expect(context).to eq(other)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "when the other is not a none" do
|
|
27
|
+
|
|
28
|
+
let(:other) do
|
|
29
|
+
Mongoid::Contextual::Memory.new(Band.where(name: "Depeche Mode"))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "returns false" do
|
|
33
|
+
expect(context).to_not eq(other)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
describe "#each" do
|
|
39
|
+
|
|
40
|
+
let!(:band) do
|
|
41
|
+
Band.create(name: "Depeche Mode")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
let(:context) do
|
|
45
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "iterates over no documents" do
|
|
49
|
+
expect(context.each.entries).to be_empty
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "#exists?" do
|
|
54
|
+
|
|
55
|
+
let!(:band) do
|
|
56
|
+
Band.create(name: "Depeche Mode")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
let(:context) do
|
|
60
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "returns false" do
|
|
64
|
+
expect(context).to_not be_exists
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe "#first" do
|
|
69
|
+
|
|
70
|
+
let!(:band) do
|
|
71
|
+
Band.create(name: "Depeche Mode")
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
let(:context) do
|
|
75
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "returns nil" do
|
|
79
|
+
expect(context.first).to be_nil
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "#last" do
|
|
84
|
+
|
|
85
|
+
let!(:band) do
|
|
86
|
+
Band.create(name: "Depeche Mode")
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
let(:context) do
|
|
90
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "returns nil" do
|
|
94
|
+
expect(context.last).to be_nil
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
describe "#length" do
|
|
99
|
+
|
|
100
|
+
let!(:band) do
|
|
101
|
+
Band.create(name: "Depeche Mode")
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
let(:context) do
|
|
105
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "returns zero" do
|
|
109
|
+
expect(context.length).to eq(0)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
describe "#size" do
|
|
114
|
+
|
|
115
|
+
let!(:band) do
|
|
116
|
+
Band.create(name: "Depeche Mode")
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
let(:context) do
|
|
120
|
+
described_class.new(Band.where(name: "Depeche Mode"))
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "returns zero" do
|
|
124
|
+
expect(context.size).to eq(0)
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
@@ -11,7 +11,7 @@ describe Mongoid::Criteria::Scopable do
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
before do
|
|
14
|
-
Band.default_scope scope
|
|
14
|
+
Band.default_scope ->{ scope }
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
after do
|
|
@@ -40,7 +40,7 @@ describe Mongoid::Criteria::Scopable do
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
before do
|
|
43
|
-
Band.default_scope scope
|
|
43
|
+
Band.default_scope ->{ scope }
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
after do
|
|
@@ -69,7 +69,7 @@ describe Mongoid::Criteria::Scopable do
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
before do
|
|
72
|
-
Band.default_scope scope
|
|
72
|
+
Band.default_scope ->{ scope }
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
after do
|
|
@@ -241,7 +241,7 @@ describe Mongoid::Criteria::Scopable do
|
|
|
241
241
|
end
|
|
242
242
|
|
|
243
243
|
before do
|
|
244
|
-
Band.default_scope criteria
|
|
244
|
+
Band.default_scope ->{ criteria }
|
|
245
245
|
end
|
|
246
246
|
|
|
247
247
|
after do
|
|
@@ -318,7 +318,7 @@ describe Mongoid::Criteria::Scopable do
|
|
|
318
318
|
end
|
|
319
319
|
|
|
320
320
|
before do
|
|
321
|
-
Band.default_scope criteria
|
|
321
|
+
Band.default_scope ->{ criteria }
|
|
322
322
|
end
|
|
323
323
|
|
|
324
324
|
after do
|
|
@@ -370,7 +370,7 @@ describe Mongoid::Criteria::Scopable do
|
|
|
370
370
|
context "when a named scope is called in the block" do
|
|
371
371
|
|
|
372
372
|
before do
|
|
373
|
-
Band.scope(:skipped, Band.skip(10))
|
|
373
|
+
Band.scope(:skipped, ->{ Band.skip(10) })
|
|
374
374
|
end
|
|
375
375
|
|
|
376
376
|
after do
|
|
@@ -362,7 +362,7 @@ describe Mongoid::Criteria do
|
|
|
362
362
|
end
|
|
363
363
|
|
|
364
364
|
it "does not hit the database after first iteration" do
|
|
365
|
-
criteria.context.query.
|
|
365
|
+
expect(criteria.context.query).to receive(:each).never
|
|
366
366
|
criteria.each do |doc|
|
|
367
367
|
expect(doc).to eq(person)
|
|
368
368
|
end
|
|
@@ -380,7 +380,7 @@ describe Mongoid::Criteria do
|
|
|
380
380
|
end
|
|
381
381
|
|
|
382
382
|
it "does not hit the database after first iteration" do
|
|
383
|
-
criteria.context.query.
|
|
383
|
+
expect(criteria.context.query).to receive(:each).never
|
|
384
384
|
criteria.each do |doc|
|
|
385
385
|
expect(doc).to eq(person)
|
|
386
386
|
end
|
|
@@ -1571,7 +1571,7 @@ describe Mongoid::Criteria do
|
|
|
1571
1571
|
context "when providing inclusions to the default scope" do
|
|
1572
1572
|
|
|
1573
1573
|
before do
|
|
1574
|
-
Person.default_scope(Person.includes(:posts))
|
|
1574
|
+
Person.default_scope(->{ Person.includes(:posts) })
|
|
1575
1575
|
end
|
|
1576
1576
|
|
|
1577
1577
|
after do
|
|
@@ -1623,7 +1623,7 @@ describe Mongoid::Criteria do
|
|
|
1623
1623
|
end
|
|
1624
1624
|
|
|
1625
1625
|
before do
|
|
1626
|
-
new_context.
|
|
1626
|
+
expect(new_context).to receive(:eager_load_one).with(person).once.and_call_original
|
|
1627
1627
|
end
|
|
1628
1628
|
|
|
1629
1629
|
let!(:from_db) do
|
|
@@ -1674,7 +1674,7 @@ describe Mongoid::Criteria do
|
|
|
1674
1674
|
end
|
|
1675
1675
|
|
|
1676
1676
|
before do
|
|
1677
|
-
context.
|
|
1677
|
+
expect(context).to receive(:eager_load_one).with(person).once.and_call_original
|
|
1678
1678
|
end
|
|
1679
1679
|
|
|
1680
1680
|
let!(:from_db) do
|
|
@@ -1934,7 +1934,7 @@ describe Mongoid::Criteria do
|
|
|
1934
1934
|
end
|
|
1935
1935
|
|
|
1936
1936
|
before do
|
|
1937
|
-
context.
|
|
1937
|
+
expect(context).to receive(:eager_load).with([ person ]).once.and_call_original
|
|
1938
1938
|
end
|
|
1939
1939
|
|
|
1940
1940
|
let!(:documents) do
|
|
@@ -1968,7 +1968,7 @@ describe Mongoid::Criteria do
|
|
|
1968
1968
|
end
|
|
1969
1969
|
|
|
1970
1970
|
before do
|
|
1971
|
-
context.
|
|
1971
|
+
expect(context).to receive(:eager_load).with([ person ]).once.and_call_original
|
|
1972
1972
|
end
|
|
1973
1973
|
|
|
1974
1974
|
let!(:documents) do
|
|
@@ -1999,7 +1999,7 @@ describe Mongoid::Criteria do
|
|
|
1999
1999
|
end
|
|
2000
2000
|
|
|
2001
2001
|
before do
|
|
2002
|
-
context.
|
|
2002
|
+
expect(context).to receive(:eager_load).with([ person ]).once.and_call_original
|
|
2003
2003
|
end
|
|
2004
2004
|
|
|
2005
2005
|
let!(:documents) do
|
|
@@ -2037,11 +2037,7 @@ describe Mongoid::Criteria do
|
|
|
2037
2037
|
end
|
|
2038
2038
|
|
|
2039
2039
|
before do
|
|
2040
|
-
context.
|
|
2041
|
-
should_receive(:eager_load).
|
|
2042
|
-
with([ game_one, game_two ]).
|
|
2043
|
-
once.
|
|
2044
|
-
and_call_original
|
|
2040
|
+
expect(context).to receive(:eager_load).with([ game_one, game_two ]).once.and_call_original
|
|
2045
2041
|
end
|
|
2046
2042
|
|
|
2047
2043
|
let!(:documents) do
|
|
@@ -2064,7 +2060,7 @@ describe Mongoid::Criteria do
|
|
|
2064
2060
|
end
|
|
2065
2061
|
|
|
2066
2062
|
before do
|
|
2067
|
-
context.
|
|
2063
|
+
expect(context).to receive(:eager_load).with([ game_one ]).once.and_call_original
|
|
2068
2064
|
end
|
|
2069
2065
|
|
|
2070
2066
|
let!(:documents) do
|
|
@@ -2104,7 +2100,7 @@ describe Mongoid::Criteria do
|
|
|
2104
2100
|
end
|
|
2105
2101
|
|
|
2106
2102
|
before do
|
|
2107
|
-
context.
|
|
2103
|
+
expect(context).to receive(:eager_load).with([ person ]).once.and_call_original
|
|
2108
2104
|
end
|
|
2109
2105
|
|
|
2110
2106
|
let!(:documents) do
|
|
@@ -2217,15 +2213,29 @@ describe Mongoid::Criteria do
|
|
|
2217
2213
|
Band.create(name: "Tool", likes: 100)
|
|
2218
2214
|
end
|
|
2219
2215
|
|
|
2220
|
-
|
|
2221
|
-
|
|
2216
|
+
context "when no timeout options are provided" do
|
|
2217
|
+
|
|
2218
|
+
let(:map_reduce) do
|
|
2219
|
+
Band.limit(2).map_reduce(map, reduce).out(inline: 1)
|
|
2220
|
+
end
|
|
2221
|
+
|
|
2222
|
+
it "returns the map/reduce results" do
|
|
2223
|
+
expect(map_reduce).to eq([
|
|
2224
|
+
{ "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
|
|
2225
|
+
{ "_id" => "Tool", "value" => { "likes" => 100 }}
|
|
2226
|
+
])
|
|
2227
|
+
end
|
|
2222
2228
|
end
|
|
2223
2229
|
|
|
2224
|
-
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2230
|
+
context "when timeout options are provided" do
|
|
2231
|
+
|
|
2232
|
+
let(:map_reduce) do
|
|
2233
|
+
Band.limit(2).no_timeout.map_reduce(map, reduce).out(replace: "test_bands")
|
|
2234
|
+
end
|
|
2235
|
+
|
|
2236
|
+
it "sets the timeout option on the query" do
|
|
2237
|
+
expect(map_reduce.send(:documents).operation.flags).to eq([ :no_cursor_timeout ])
|
|
2238
|
+
end
|
|
2229
2239
|
end
|
|
2230
2240
|
end
|
|
2231
2241
|
|
|
@@ -3254,7 +3264,7 @@ describe Mongoid::Criteria do
|
|
|
3254
3264
|
context "when the method exists on the class" do
|
|
3255
3265
|
|
|
3256
3266
|
before do
|
|
3257
|
-
Person.
|
|
3267
|
+
expect(Person).to receive(:minor).and_call_original
|
|
3258
3268
|
end
|
|
3259
3269
|
|
|
3260
3270
|
it "calls the method on the class" do
|
|
@@ -3265,7 +3275,7 @@ describe Mongoid::Criteria do
|
|
|
3265
3275
|
context "when the method exists on the criteria" do
|
|
3266
3276
|
|
|
3267
3277
|
before do
|
|
3268
|
-
criteria.
|
|
3278
|
+
expect(criteria).to receive(:to_criteria).and_call_original
|
|
3269
3279
|
end
|
|
3270
3280
|
|
|
3271
3281
|
it "calls the method on the criteria" do
|
|
@@ -3276,7 +3286,7 @@ describe Mongoid::Criteria do
|
|
|
3276
3286
|
context "when the method exists on array" do
|
|
3277
3287
|
|
|
3278
3288
|
before do
|
|
3279
|
-
criteria.
|
|
3289
|
+
expect(criteria).to receive(:entries).and_call_original
|
|
3280
3290
|
end
|
|
3281
3291
|
|
|
3282
3292
|
it "calls the method on the criteria" do
|
|
@@ -3287,7 +3297,7 @@ describe Mongoid::Criteria do
|
|
|
3287
3297
|
context "when the method does not exist" do
|
|
3288
3298
|
|
|
3289
3299
|
before do
|
|
3290
|
-
criteria.
|
|
3300
|
+
expect(criteria).to receive(:entries).never
|
|
3291
3301
|
end
|
|
3292
3302
|
|
|
3293
3303
|
it "raises an error" do
|
|
@@ -3332,81 +3342,27 @@ describe Mongoid::Criteria do
|
|
|
3332
3342
|
end
|
|
3333
3343
|
end
|
|
3334
3344
|
|
|
3335
|
-
describe "#
|
|
3336
|
-
|
|
3337
|
-
before do
|
|
3338
|
-
Bar.create_indexes
|
|
3339
|
-
end
|
|
3340
|
-
|
|
3341
|
-
let!(:match) do
|
|
3342
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
3343
|
-
end
|
|
3345
|
+
describe "#geo_spacial" do
|
|
3344
3346
|
|
|
3345
|
-
|
|
3346
|
-
Bar.within_box(location: [[ 50, 10 ], [ 60, 20 ]])
|
|
3347
|
-
end
|
|
3347
|
+
context "when checking within a polygon" do
|
|
3348
3348
|
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
end
|
|
3353
|
-
|
|
3354
|
-
describe "#within_circle" do
|
|
3355
|
-
|
|
3356
|
-
before do
|
|
3357
|
-
Bar.create_indexes
|
|
3358
|
-
end
|
|
3359
|
-
|
|
3360
|
-
let!(:match) do
|
|
3361
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
3362
|
-
end
|
|
3363
|
-
|
|
3364
|
-
let(:criteria) do
|
|
3365
|
-
Bar.within_circle(location: [[ 52, 13 ], 0.5 ])
|
|
3366
|
-
end
|
|
3367
|
-
|
|
3368
|
-
it "returns the matching documents" do
|
|
3369
|
-
expect(criteria).to eq([ match ])
|
|
3370
|
-
end
|
|
3371
|
-
end
|
|
3372
|
-
|
|
3373
|
-
describe "#within_polygon" do
|
|
3374
|
-
|
|
3375
|
-
before do
|
|
3376
|
-
Bar.create_indexes
|
|
3377
|
-
end
|
|
3378
|
-
|
|
3379
|
-
let!(:match) do
|
|
3380
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
3381
|
-
end
|
|
3382
|
-
|
|
3383
|
-
let(:criteria) do
|
|
3384
|
-
Bar.within_polygon(
|
|
3385
|
-
location: [[ 50, 10 ], [ 50, 20 ], [ 60, 20 ], [ 60, 10 ]]
|
|
3386
|
-
)
|
|
3387
|
-
end
|
|
3388
|
-
|
|
3389
|
-
it "returns the matching documents" do
|
|
3390
|
-
expect(criteria).to eq([ match ])
|
|
3391
|
-
end
|
|
3392
|
-
end
|
|
3393
|
-
|
|
3394
|
-
describe "#within_spherical_circle" do
|
|
3395
|
-
|
|
3396
|
-
before do
|
|
3397
|
-
Bar.create_indexes
|
|
3398
|
-
end
|
|
3349
|
+
before do
|
|
3350
|
+
Bar.create_indexes
|
|
3351
|
+
end
|
|
3399
3352
|
|
|
3400
|
-
|
|
3401
|
-
|
|
3402
|
-
|
|
3353
|
+
let!(:match) do
|
|
3354
|
+
Bar.create(location: [ 52.30, 13.25 ])
|
|
3355
|
+
end
|
|
3403
3356
|
|
|
3404
|
-
|
|
3405
|
-
|
|
3406
|
-
|
|
3357
|
+
let(:criteria) do
|
|
3358
|
+
Bar.geo_spacial(
|
|
3359
|
+
:location.within_polygon => [[[ 50, 10 ], [ 50, 20 ], [ 60, 20 ], [ 60, 10 ], [ 50, 10 ]]]
|
|
3360
|
+
)
|
|
3361
|
+
end
|
|
3407
3362
|
|
|
3408
|
-
|
|
3409
|
-
|
|
3363
|
+
it "returns the matching documents" do
|
|
3364
|
+
expect(criteria).to eq([ match ])
|
|
3365
|
+
end
|
|
3410
3366
|
end
|
|
3411
3367
|
end
|
|
3412
3368
|
|
|
@@ -16,13 +16,13 @@ describe Mongoid::Errors::InvalidScope do
|
|
|
16
16
|
|
|
17
17
|
it "contains the summary in the message" do
|
|
18
18
|
expect(error.message).to include(
|
|
19
|
-
"Scopes in Mongoid must be
|
|
19
|
+
"Scopes in Mongoid must be procs that wrap"
|
|
20
20
|
)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
it "contains the resolution in the message" do
|
|
24
24
|
expect(error.message).to include(
|
|
25
|
-
"Change the scope to be a
|
|
25
|
+
"Change the scope to be a proc wrapped critera."
|
|
26
26
|
)
|
|
27
27
|
end
|
|
28
28
|
end
|