sunspot 2.2.7 → 2.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/Appraisals +7 -0
  5. data/Gemfile +0 -8
  6. data/gemfiles/.gitkeep +0 -0
  7. data/lib/sunspot/dsl/scope.rb +6 -1
  8. data/lib/sunspot/field.rb +11 -0
  9. data/lib/sunspot/field_factory.rb +6 -2
  10. data/lib/sunspot/query/bbox.rb +5 -1
  11. data/lib/sunspot/query/restriction.rb +11 -0
  12. data/lib/sunspot/search/hit_enumerable.rb +4 -1
  13. data/lib/sunspot/search/standard_search.rb +2 -3
  14. data/lib/sunspot/version.rb +1 -1
  15. data/spec/api/adapters_spec.rb +19 -19
  16. data/spec/api/batcher_spec.rb +15 -15
  17. data/spec/api/binding_spec.rb +3 -3
  18. data/spec/api/class_set_spec.rb +3 -3
  19. data/spec/api/hit_enumerable_spec.rb +32 -9
  20. data/spec/api/indexer/attributes_spec.rb +31 -31
  21. data/spec/api/indexer/batch_spec.rb +8 -7
  22. data/spec/api/indexer/dynamic_fields_spec.rb +8 -8
  23. data/spec/api/indexer/fixed_fields_spec.rb +12 -12
  24. data/spec/api/indexer/fulltext_spec.rb +8 -8
  25. data/spec/api/indexer/removal_spec.rb +14 -14
  26. data/spec/api/indexer_spec.rb +2 -2
  27. data/spec/api/query/advanced_manipulation_examples.rb +3 -3
  28. data/spec/api/query/connectives_examples.rb +26 -14
  29. data/spec/api/query/dsl_spec.rb +17 -9
  30. data/spec/api/query/dynamic_fields_examples.rb +18 -18
  31. data/spec/api/query/faceting_examples.rb +62 -62
  32. data/spec/api/query/fulltext_examples.rb +56 -55
  33. data/spec/api/query/function_spec.rb +26 -26
  34. data/spec/api/query/geo_examples.rb +6 -6
  35. data/spec/api/query/group_spec.rb +6 -6
  36. data/spec/api/query/highlighting_examples.rb +26 -26
  37. data/spec/api/query/join_spec.rb +2 -2
  38. data/spec/api/query/more_like_this_spec.rb +29 -29
  39. data/spec/api/query/ordering_pagination_examples.rb +25 -25
  40. data/spec/api/query/scope_examples.rb +39 -39
  41. data/spec/api/query/spatial_examples.rb +3 -3
  42. data/spec/api/query/spellcheck_examples.rb +3 -3
  43. data/spec/api/query/standard_spec.rb +1 -1
  44. data/spec/api/query/stats_examples.rb +8 -8
  45. data/spec/api/query/text_field_scoping_examples.rb +5 -5
  46. data/spec/api/query/types_spec.rb +4 -4
  47. data/spec/api/search/cursor_paginated_collection_spec.rb +12 -12
  48. data/spec/api/search/dynamic_fields_spec.rb +4 -4
  49. data/spec/api/search/faceting_spec.rb +55 -52
  50. data/spec/api/search/highlighting_spec.rb +7 -7
  51. data/spec/api/search/hits_spec.rb +29 -29
  52. data/spec/api/search/paginated_collection_spec.rb +18 -18
  53. data/spec/api/search/results_spec.rb +13 -13
  54. data/spec/api/search/search_spec.rb +3 -3
  55. data/spec/api/search/stats_spec.rb +10 -10
  56. data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +19 -18
  57. data/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +9 -9
  58. data/spec/api/session_proxy/master_slave_session_proxy_spec.rb +10 -6
  59. data/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +10 -10
  60. data/spec/api/session_proxy/sharding_session_proxy_spec.rb +14 -13
  61. data/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +2 -2
  62. data/spec/api/session_proxy/spec_helper.rb +1 -1
  63. data/spec/api/session_proxy/thread_local_session_proxy_spec.rb +9 -5
  64. data/spec/api/session_spec.rb +42 -42
  65. data/spec/api/sunspot_spec.rb +4 -4
  66. data/spec/integration/atomic_updates_spec.rb +25 -11
  67. data/spec/integration/dynamic_fields_spec.rb +10 -10
  68. data/spec/integration/faceting_spec.rb +39 -39
  69. data/spec/integration/field_grouping_spec.rb +16 -16
  70. data/spec/integration/field_lists_spec.rb +41 -0
  71. data/spec/integration/geospatial_spec.rb +19 -8
  72. data/spec/integration/highlighting_spec.rb +5 -5
  73. data/spec/integration/indexing_spec.rb +5 -5
  74. data/spec/integration/keyword_search_spec.rb +47 -45
  75. data/spec/integration/local_search_spec.rb +4 -4
  76. data/spec/integration/more_like_this_spec.rb +7 -7
  77. data/spec/integration/scoped_search_spec.rb +107 -107
  78. data/spec/integration/spellcheck_spec.rb +52 -7
  79. data/spec/integration/stats_spec.rb +10 -10
  80. data/spec/integration/stored_fields_spec.rb +1 -1
  81. data/spec/integration/test_pagination.rb +4 -4
  82. data/spec/integration/unicode_spec.rb +1 -1
  83. data/spec/mocks/post.rb +5 -1
  84. data/spec/spec_helper.rb +11 -6
  85. data/sunspot.gemspec +3 -1
  86. metadata +40 -7
@@ -0,0 +1,41 @@
1
+ require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
+
3
+ describe 'fields lists' do
4
+ before :all do
5
+ Sunspot.remove_all
6
+ @post = Post.new(title: 'A Title', body: 'A Body', featured: true, tags: ['tag'])
7
+ Sunspot.index!(@post)
8
+ end
9
+
10
+ let(:stored_field_names) do
11
+ (Sunspot::Setup.for(Post).fields + Sunspot::Setup.for(Post).all_text_fields)
12
+ .select { |f| f.stored? }
13
+ .map { |f| f.name }
14
+ end
15
+
16
+ it 'loads all stored fields by dafault' do
17
+ hit = Sunspot.search(Post).hits.first
18
+
19
+ stored_field_names.each do |field|
20
+ expect(hit.stored(field)).not_to be_nil
21
+ end
22
+ end
23
+
24
+ it 'loads only filtered fields' do
25
+ hit = Sunspot.search(Post) { field_list(:title) }.hits.first
26
+
27
+ expect(hit.stored(:title)).to eq(@post.title)
28
+
29
+ (stored_field_names - [:title]).each do |field|
30
+ expect(hit.stored(field)).to be_nil
31
+ end
32
+ end
33
+
34
+ it 'does not load any stored fields' do
35
+ hit = Sunspot.search(Post) { without_stored_fields }.hits.first
36
+
37
+ stored_field_names.each do |field|
38
+ expect(hit.stored(field)).to be_nil
39
+ end
40
+ end
41
+ end
@@ -15,7 +15,7 @@ describe "geospatial search" do
15
15
  with(:coordinates_new).in_radius(32, -68, 1)
16
16
  }.results
17
17
 
18
- results.should include(@post)
18
+ expect(results).to include(@post)
19
19
  end
20
20
 
21
21
  it "filters out posts not in the radius" do
@@ -23,10 +23,10 @@ describe "geospatial search" do
23
23
  with(:coordinates_new).in_radius(33, -68, 1)
24
24
  }.results
25
25
 
26
- results.should_not include(@post)
26
+ expect(results).not_to include(@post)
27
27
  end
28
28
 
29
- it "allows conjunction queries" do
29
+ it "allows conjunction queries with radius" do
30
30
  results = Sunspot.search(Post) {
31
31
  any_of do
32
32
  with(:coordinates_new).in_radius(32, -68, 1)
@@ -34,7 +34,18 @@ describe "geospatial search" do
34
34
  end
35
35
  }.results
36
36
 
37
- results.should include(@post)
37
+ expect(results).to include(@post)
38
+ end
39
+
40
+ it "allows conjunction queries with bounding box" do
41
+ results = Sunspot.search(Post) {
42
+ any_of do
43
+ with(:coordinates_new).in_bounding_box([31, -69], [33, -67])
44
+ with(:coordinates_new).in_bounding_box([35, 68], [36, 69])
45
+ end
46
+ }.results
47
+
48
+ expect(results).to include(@post)
38
49
  end
39
50
  end
40
51
 
@@ -52,7 +63,7 @@ describe "geospatial search" do
52
63
  with(:coordinates_new).in_bounding_box [31, -69], [33, -67]
53
64
  }.results
54
65
 
55
- results.should include(@post)
66
+ expect(results).to include(@post)
56
67
  end
57
68
 
58
69
  it "filters out posts not in the bounding box" do
@@ -60,7 +71,7 @@ describe "geospatial search" do
60
71
  with(:coordinates_new).in_bounding_box [20, -70], [21, -69]
61
72
  }.results
62
73
 
63
- results.should_not include(@post)
74
+ expect(results).not_to include(@post)
64
75
  end
65
76
  end
66
77
 
@@ -82,7 +93,7 @@ describe "geospatial search" do
82
93
  order_by_geodist(:coordinates_new, 32, -68)
83
94
  }.results
84
95
 
85
- results.should == @posts.reverse
96
+ expect(results).to eq(@posts.reverse)
86
97
  end
87
98
 
88
99
  it "orders posts by distance descending" do
@@ -90,7 +101,7 @@ describe "geospatial search" do
90
101
  order_by_geodist(:coordinates_new, 32, -68, :desc)
91
102
  }.results
92
103
 
93
- results.should == @posts
104
+ expect(results).to eq(@posts)
94
105
  end
95
106
  end
96
107
  end
@@ -11,16 +11,16 @@ describe 'keyword highlighting' do
11
11
  end
12
12
 
13
13
  it 'should include highlights in the results' do
14
- @search_result.hits.first.highlights.length.should == 1
14
+ expect(@search_result.hits.first.highlights.length).to eq(1)
15
15
  end
16
16
 
17
17
  it 'should return formatted highlight fragments' do
18
- @search_result.hits.first.highlights(:body).first.format.should == 'And the <em>fox</em> laughed'
18
+ expect(@search_result.hits.first.highlights(:body).first.format).to eq('And the <em>fox</em> laughed')
19
19
  end
20
20
 
21
21
  it 'should be empty for non-keyword searches' do
22
22
  search_result = Sunspot.search(Post){ with :blog_id, 1 }
23
- search_result.hits.first.highlights.should be_empty
23
+ expect(search_result.hits.first.highlights).to be_empty
24
24
  end
25
25
 
26
26
  it "should process multiple keyword request on different fields with highlights correctly" do
@@ -35,8 +35,8 @@ describe 'keyword highlighting' do
35
35
  end
36
36
  end
37
37
  end.to_not raise_error
38
- search_results.results.length.should eq(1)
39
- search_results.results.first.should eq(@posts.last)
38
+ expect(search_results.results.length).to eq(1)
39
+ expect(search_results.results.first).to eq(@posts.last)
40
40
  # this one might be a Solr bug, therefore not related to Sunspot itself
41
41
  # search_results.hits.first.highlights.should_not be_empty
42
42
  end
@@ -2,23 +2,23 @@ require File.expand_path('../spec_helper', File.dirname(__FILE__))
2
2
 
3
3
  describe 'indexing' do
4
4
  it 'should index non-multivalued field with newlines' do
5
- lambda do
5
+ expect do
6
6
  Sunspot.index!(Post.new(:title => "A\nTitle"))
7
- end.should_not raise_error
7
+ end.not_to raise_error
8
8
  end
9
9
 
10
10
  it 'should correctly remove by model instance' do
11
11
  post = Post.new(:title => 'test post')
12
12
  Sunspot.index!(post)
13
13
  Sunspot.remove!(post)
14
- Sunspot.search(Post) { with(:title, 'test post') }.results.should be_empty
14
+ expect(Sunspot.search(Post) { with(:title, 'test post') }.results).to be_empty
15
15
  end
16
16
 
17
17
  it 'should correctly delete by ID' do
18
18
  post = Post.new(:title => 'test post')
19
19
  Sunspot.index!(post)
20
20
  Sunspot.remove_by_id!(Post, post.id)
21
- Sunspot.search(Post) { with(:title, 'test post') }.results.should be_empty
21
+ expect(Sunspot.search(Post) { with(:title, 'test post') }.results).to be_empty
22
22
  end
23
23
 
24
24
  it 'removes documents by query' do
@@ -29,7 +29,7 @@ describe 'indexing' do
29
29
  Sunspot.remove!(Post) do
30
30
  with(:title, 'birds')
31
31
  end
32
- Sunspot.search(Post).should have(1).results
32
+ expect(Sunspot.search(Post).results.size).to eq(1)
33
33
  end
34
34
 
35
35
 
@@ -19,8 +19,8 @@ describe 'keyword search' do
19
19
  context 'edismax' do
20
20
  it 'matches with wildcards' do
21
21
  results = Sunspot.search(Post) { keywords '*oas*' }.results
22
- [0,2].each { |i| results.should include(@posts[i])}
23
- [1].each { |i| results.should_not include(@posts[i])}
22
+ [0,2].each { |i| expect(results).to include(@posts[i])}
23
+ [1].each { |i| expect(results).not_to include(@posts[i])}
24
24
  end
25
25
 
26
26
  it 'matches multiple keywords on different fields with wildcards using subqueries' do
@@ -28,52 +28,52 @@ describe 'keyword search' do
28
28
  keywords 'insuffic*',:fields=>[:title]
29
29
  keywords 'win*',:fields=>[:body]
30
30
  end.results
31
- [0].each {|i| results.should include(@posts[i])}
32
- [1,2].each {|i| results.should_not include(@posts[i])}
31
+ [0].each {|i| expect(results).to include(@posts[i])}
32
+ [1,2].each {|i| expect(results).not_to include(@posts[i])}
33
33
  end
34
34
 
35
35
  it 'matches with proximity' do
36
36
  results = Sunspot.search(Post) { keywords '"wind buffer"~4' }.results
37
- [0,1].each {|i| results.should_not include(@posts[i])}
38
- [2].each {|i| results.should include(@posts[i])}
37
+ [0,1].each {|i| expect(results).not_to include(@posts[i])}
38
+ [2].each {|i| expect(results).to include(@posts[i])}
39
39
  end
40
40
 
41
41
  it 'does not match if not within proximity' do
42
42
  results = Sunspot.search(Post) { keywords '"wind buffer"~1' }.results
43
- results.should == []
43
+ expect(results).to eq([])
44
44
  end
45
45
  end
46
46
 
47
47
  it 'matches a single keyword out of a single field' do
48
48
  results = Sunspot.search(Post) { keywords 'toast' }.results
49
- [0, 2].each { |i| results.should include(@posts[i]) }
50
- [1].each { |i| results.should_not include(@posts[i]) }
49
+ [0, 2].each { |i| expect(results).to include(@posts[i]) }
50
+ [1].each { |i| expect(results).not_to include(@posts[i]) }
51
51
  end
52
52
 
53
53
  it 'matches multiple words out of a single field' do
54
54
  results = Sunspot.search(Post) { keywords 'elects toast' }.results
55
- results.should == [@posts[0]]
55
+ expect(results).to eq([@posts[0]])
56
56
  end
57
57
 
58
58
  it 'matches multiple words in multiple fields' do
59
59
  results = Sunspot.search(Post) { keywords 'toast wind' }.results
60
- [0, 2].each { |i| results.should include(@posts[i]) }
61
- [1].each { |i| results.should_not include(@posts[i]) }
60
+ [0, 2].each { |i| expect(results).to include(@posts[i]) }
61
+ [1].each { |i| expect(results).not_to include(@posts[i]) }
62
62
  end
63
63
 
64
64
  it 'matches multiple types' do
65
65
  results = Sunspot.search(Post, Namespaced::Comment) do
66
66
  keywords 'toast'
67
67
  end.results
68
- [@posts[0], @posts[2], @comment].each { |obj| results.should include(obj) }
69
- results.should_not include(@posts[1])
68
+ [@posts[0], @posts[2], @comment].each { |obj| expect(results).to include(obj) }
69
+ expect(results).not_to include(@posts[1])
70
70
  end
71
71
 
72
72
  it 'matches keywords from only the fields specified' do
73
73
  results = Sunspot.search(Post) do
74
74
  keywords 'moron', :fields => [:title]
75
75
  end.results
76
- results.should == [@posts[1]]
76
+ expect(results).to eq([@posts[1]])
77
77
  end
78
78
 
79
79
  it 'matches multiple keywords on different fields using subqueries' do
@@ -81,13 +81,13 @@ describe 'keyword search' do
81
81
  keywords 'moron', :fields => [:title]
82
82
  keywords 'wind', :fields => [:body]
83
83
  end
84
- search.results.should == []
84
+ expect(search.results).to eq([])
85
85
 
86
86
  search = Sunspot.search(Post) do
87
87
  keywords 'moron', :fields => [:title]
88
88
  keywords 'buffer', :fields => [:body]
89
89
  end
90
- search.results.should == [@posts[1]]
90
+ expect(search.results).to eq([@posts[1]])
91
91
  end
92
92
 
93
93
  it 'matches multiple keywords with escaped characters' do
@@ -95,7 +95,7 @@ describe 'keyword search' do
95
95
  keywords 'spirit', :fields => [:title]
96
96
  keywords 'host\'s', :fields => [:body]
97
97
  end
98
- search.results.should == [@posts[2]]
98
+ expect(search.results).to eq([@posts[2]])
99
99
  end
100
100
 
101
101
  it 'matches multiple keywords with phrase-based search' do
@@ -104,7 +104,7 @@ describe 'keyword search' do
104
104
  keywords '"interpret the buffer"', :fields => [:body]
105
105
  keywords '"does the"', :fields => [:body]
106
106
  end
107
- search.results.should == [@posts[2]]
107
+ expect(search.results).to eq([@posts[2]])
108
108
  end
109
109
 
110
110
  it 'matches multiple keywords different options' do
@@ -112,7 +112,7 @@ describe 'keyword search' do
112
112
  keywords 'insufficient nonexistent', :fields => [:title], :minimum_match => 1
113
113
  keywords 'wind does', :fields => [:body], :minimum_match => 2
114
114
  end
115
- search.results.should == [@posts[0]]
115
+ expect(search.results).to eq([@posts[0]])
116
116
  end
117
117
  end
118
118
 
@@ -125,9 +125,10 @@ describe 'keyword search' do
125
125
 
126
126
  it 'should assign a higher score to the result matching the higher-boosted field' do
127
127
  search = Sunspot.search(Post) { keywords 'rhinoceros' }
128
- search.hits.map { |hit| hit.primary_key }.should ==
128
+ expect(search.hits.map { |hit| hit.primary_key }).to eq(
129
129
  @posts.map { |post| post.id.to_s }
130
- search.hits.first.score.should > search.hits.last.score
130
+ )
131
+ expect(search.hits.first.score).to be > search.hits.last.score
131
132
  end
132
133
  end
133
134
 
@@ -142,9 +143,10 @@ describe 'keyword search' do
142
143
 
143
144
  it 'should assign a higher score to the higher-boosted document' do
144
145
  search = Sunspot.search(Post) { keywords 'test' }
145
- search.hits.map { |hit| hit.primary_key }.should ==
146
+ expect(search.hits.map { |hit| hit.primary_key }).to eq(
146
147
  @posts.map { |post| post.id.to_s }
147
- search.hits.first.score.should > search.hits.last.score
148
+ )
149
+ expect(search.hits.first.score).to be > search.hits.last.score
148
150
  end
149
151
  end
150
152
 
@@ -164,8 +166,8 @@ describe 'keyword search' do
164
166
  phrase_fields :body => 2.0
165
167
  end
166
168
  end.hits
167
- hits.first.instance.should == @comments.first
168
- hits.first.score.should > hits.last.score
169
+ expect(hits.first.instance).to eq(@comments.first)
170
+ expect(hits.first.score).to be > hits.last.score
169
171
  end
170
172
 
171
173
  it 'assigns a higher score to documents in which the search terms appear in a boosted field' do
@@ -174,8 +176,8 @@ describe 'keyword search' do
174
176
  fields :body => 2.0, :author_name => 0.75
175
177
  end
176
178
  end.hits
177
- hits.first.instance.should == @comments.first
178
- hits.first.score.should > hits.last.score
179
+ expect(hits.first.instance).to eq(@comments.first)
180
+ expect(hits.first.score).to be > hits.last.score
179
181
  end
180
182
 
181
183
  it 'assigns a higher score to documents in which the search terms appear in a higher boosted phrase field' do
@@ -184,8 +186,8 @@ describe 'keyword search' do
184
186
  phrase_fields :body => 2.0, :author_name => 0.75
185
187
  end
186
188
  end.hits
187
- hits.first.instance.should == @comments.first
188
- hits.first.score.should > hits.last.score
189
+ expect(hits.first.instance).to eq(@comments.first)
190
+ expect(hits.first.score).to be > hits.last.score
189
191
  end
190
192
  end
191
193
 
@@ -210,8 +212,8 @@ describe 'keyword search' do
210
212
  end
211
213
  query.without(@posts[1])
212
214
  end
213
- search.results.should == [@posts[0], @posts[2]]
214
- search.hits[0].score.should > search.hits[1].score
215
+ expect(search.results).to eq([@posts[0], @posts[2]])
216
+ expect(search.hits[0].score).to be > search.hits[1].score
215
217
  end
216
218
 
217
219
  it 'should assign scores in order of multiple boost query match' do
@@ -221,9 +223,9 @@ describe 'keyword search' do
221
223
  boost(1.5) { with(:average_rating).greater_than(3.0) }
222
224
  end
223
225
  end
224
- search.results.should == @posts
225
- search.hits[0].score.should > search.hits[1].score
226
- search.hits[1].score.should > search.hits[2].score
226
+ expect(search.results).to eq(@posts)
227
+ expect(search.hits[0].score).to be > search.hits[1].score
228
+ expect(search.hits[1].score).to be > search.hits[2].score
227
229
  end
228
230
  end
229
231
 
@@ -241,11 +243,11 @@ describe 'keyword search' do
241
243
  end
242
244
 
243
245
  it 'should match documents that contain the minimum_match number of search terms' do
244
- @search.results.should include(@posts[0])
246
+ expect(@search.results).to include(@posts[0])
245
247
  end
246
248
 
247
249
  it 'should not match documents that do not contain the minimum_match number of search terms' do
248
- @search.results.should_not include(@posts[1])
250
+ expect(@search.results).not_to include(@posts[1])
249
251
  end
250
252
  end
251
253
 
@@ -264,15 +266,15 @@ describe 'keyword search' do
264
266
  end
265
267
 
266
268
  it 'should match exact phrase' do
267
- @search.results.should include(@posts[0])
269
+ expect(@search.results).to include(@posts[0])
268
270
  end
269
271
 
270
272
  it 'should match phrase divided by query phrase slop terms' do
271
- @search.results.should include(@posts[1])
273
+ expect(@search.results).to include(@posts[1])
272
274
  end
273
275
 
274
276
  it 'should not match phrase divided by more than query phrase slop terms' do
275
- @search.results.should_not include(@posts[2])
277
+ expect(@search.results).not_to include(@posts[2])
276
278
  end
277
279
  end
278
280
 
@@ -298,15 +300,15 @@ describe 'keyword search' do
298
300
  end
299
301
 
300
302
  it 'should give phrase field boost to exact match' do
301
- @sorted_hits[0].score.should > @sorted_hits[1].score
303
+ expect(@sorted_hits[0].score).to be > @sorted_hits[1].score
302
304
  end
303
305
 
304
306
  it 'should give phrase field boost to match within slop' do
305
- @sorted_hits[2].score.should > @sorted_hits[3].score
307
+ expect(@sorted_hits[2].score).to be > @sorted_hits[3].score
306
308
  end
307
309
 
308
310
  it 'should not give phrase field boost to match beyond slop' do
309
- @sorted_hits[4].score.should == @sorted_hits[5].score
311
+ expect(@sorted_hits[4].score).to eq(@sorted_hits[5].score)
310
312
  end
311
313
  end
312
314
 
@@ -316,8 +318,8 @@ describe 'keyword search' do
316
318
  end
317
319
 
318
320
  after :each do
319
- @search.results.should == @posts
320
- @search.hits.first.score.should > @search.hits.last.score
321
+ expect(@search.results).to eq(@posts)
322
+ expect(@search.hits.first.score).to be > @search.hits.last.score
321
323
  end
322
324
 
323
325
  it 'boosts via function query with float' do
@@ -25,13 +25,13 @@ describe 'local search' do
25
25
  end
26
26
 
27
27
  it 'should return results in geo order' do
28
- @search.results.should == @posts
28
+ expect(@search.results).to eq(@posts)
29
29
  end
30
30
 
31
31
  it 'should asssign higher score to closer locations' do
32
32
  hits = @search.hits
33
33
  hits[1..-1].each_with_index do |hit, i|
34
- hit.score.should < hits[i].score
34
+ expect(hit.score).to be < hits[i].score
35
35
  end
36
36
  end
37
37
  end
@@ -51,13 +51,13 @@ describe 'local search' do
51
51
  end
52
52
 
53
53
  it 'should take both fulltext and distance into account in ordering' do
54
- @search.results.should == @posts
54
+ expect(@search.results).to eq(@posts)
55
55
  end
56
56
 
57
57
  it 'should take both fulltext and distance into account in scoring' do
58
58
  hits = @search.hits
59
59
  hits[1..-1].each_with_index do |hit, i|
60
- hit.score.should < hits[i].score
60
+ expect(hit.score).to be < hits[i].score
61
61
  end
62
62
  end
63
63
  end