sunspot 2.0.0 → 2.5.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 (165) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.rspec +2 -0
  4. data/Appraisals +7 -0
  5. data/Gemfile +0 -2
  6. data/History.txt +10 -0
  7. data/lib/sunspot.rb +55 -17
  8. data/lib/sunspot/adapters.rb +68 -18
  9. data/lib/sunspot/batcher.rb +1 -1
  10. data/lib/sunspot/configuration.rb +4 -2
  11. data/lib/sunspot/data_extractor.rb +36 -6
  12. data/lib/sunspot/dsl.rb +4 -3
  13. data/lib/sunspot/dsl/adjustable.rb +2 -2
  14. data/lib/sunspot/dsl/field_query.rb +69 -16
  15. data/lib/sunspot/dsl/field_stats.rb +25 -0
  16. data/lib/sunspot/dsl/fields.rb +28 -8
  17. data/lib/sunspot/dsl/fulltext.rb +9 -1
  18. data/lib/sunspot/dsl/group.rb +118 -0
  19. data/lib/sunspot/dsl/paginatable.rb +4 -1
  20. data/lib/sunspot/dsl/scope.rb +19 -10
  21. data/lib/sunspot/dsl/search.rb +1 -1
  22. data/lib/sunspot/dsl/spellcheckable.rb +14 -0
  23. data/lib/sunspot/dsl/standard_query.rb +63 -35
  24. data/lib/sunspot/field.rb +76 -4
  25. data/lib/sunspot/field_factory.rb +60 -11
  26. data/lib/sunspot/indexer.rb +70 -18
  27. data/lib/sunspot/query.rb +5 -4
  28. data/lib/sunspot/query/abstract_field_facet.rb +0 -2
  29. data/lib/sunspot/query/abstract_fulltext.rb +76 -0
  30. data/lib/sunspot/query/abstract_json_field_facet.rb +70 -0
  31. data/lib/sunspot/query/bbox.rb +5 -1
  32. data/lib/sunspot/query/common_query.rb +31 -6
  33. data/lib/sunspot/query/composite_fulltext.rb +58 -8
  34. data/lib/sunspot/query/date_field_json_facet.rb +25 -0
  35. data/lib/sunspot/query/dismax.rb +25 -71
  36. data/lib/sunspot/query/field_json_facet.rb +19 -0
  37. data/lib/sunspot/query/field_list.rb +15 -0
  38. data/lib/sunspot/query/field_stats.rb +61 -0
  39. data/lib/sunspot/query/function_query.rb +1 -2
  40. data/lib/sunspot/query/geo.rb +1 -1
  41. data/lib/sunspot/query/geofilt.rb +8 -3
  42. data/lib/sunspot/query/group.rb +46 -0
  43. data/lib/sunspot/query/group_query.rb +17 -0
  44. data/lib/sunspot/query/join.rb +88 -0
  45. data/lib/sunspot/query/more_like_this.rb +1 -1
  46. data/lib/sunspot/query/pagination.rb +12 -4
  47. data/lib/sunspot/query/range_json_facet.rb +28 -0
  48. data/lib/sunspot/query/restriction.rb +99 -13
  49. data/lib/sunspot/query/sort.rb +41 -0
  50. data/lib/sunspot/query/sort_composite.rb +7 -0
  51. data/lib/sunspot/query/spellcheck.rb +19 -0
  52. data/lib/sunspot/query/standard_query.rb +24 -2
  53. data/lib/sunspot/query/text_field_boost.rb +1 -3
  54. data/lib/sunspot/schema.rb +12 -3
  55. data/lib/sunspot/search.rb +4 -2
  56. data/lib/sunspot/search/abstract_search.rb +93 -43
  57. data/lib/sunspot/search/cursor_paginated_collection.rb +32 -0
  58. data/lib/sunspot/search/field_facet.rb +4 -4
  59. data/lib/sunspot/search/field_json_facet.rb +33 -0
  60. data/lib/sunspot/search/field_stats.rb +21 -0
  61. data/lib/sunspot/search/hit.rb +6 -1
  62. data/lib/sunspot/search/hit_enumerable.rb +4 -1
  63. data/lib/sunspot/search/json_facet_row.rb +40 -0
  64. data/lib/sunspot/search/json_facet_stats.rb +23 -0
  65. data/lib/sunspot/search/paginated_collection.rb +1 -0
  66. data/lib/sunspot/search/query_group.rb +74 -0
  67. data/lib/sunspot/search/standard_search.rb +70 -3
  68. data/lib/sunspot/search/stats_facet.rb +25 -0
  69. data/lib/sunspot/search/stats_json_row.rb +82 -0
  70. data/lib/sunspot/search/stats_row.rb +68 -0
  71. data/lib/sunspot/session.rb +62 -37
  72. data/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +6 -4
  73. data/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +16 -8
  74. data/lib/sunspot/session_proxy/master_slave_session_proxy.rb +2 -2
  75. data/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +1 -1
  76. data/lib/sunspot/session_proxy/sharding_session_proxy.rb +4 -2
  77. data/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +1 -1
  78. data/lib/sunspot/session_proxy/thread_local_session_proxy.rb +6 -4
  79. data/lib/sunspot/setup.rb +42 -0
  80. data/lib/sunspot/type.rb +20 -0
  81. data/lib/sunspot/util.rb +78 -14
  82. data/lib/sunspot/version.rb +1 -1
  83. data/spec/api/adapters_spec.rb +40 -15
  84. data/spec/api/batcher_spec.rb +15 -15
  85. data/spec/api/binding_spec.rb +3 -3
  86. data/spec/api/class_set_spec.rb +6 -6
  87. data/spec/api/data_extractor_spec.rb +39 -0
  88. data/spec/api/hit_enumerable_spec.rb +32 -9
  89. data/spec/api/indexer/attributes_spec.rb +35 -30
  90. data/spec/api/indexer/batch_spec.rb +8 -7
  91. data/spec/api/indexer/dynamic_fields_spec.rb +8 -8
  92. data/spec/api/indexer/fixed_fields_spec.rb +16 -11
  93. data/spec/api/indexer/fulltext_spec.rb +8 -8
  94. data/spec/api/indexer/removal_spec.rb +24 -14
  95. data/spec/api/indexer_spec.rb +2 -2
  96. data/spec/api/query/advanced_manipulation_examples.rb +3 -3
  97. data/spec/api/query/connectives_examples.rb +26 -14
  98. data/spec/api/query/dsl_spec.rb +24 -6
  99. data/spec/api/query/dynamic_fields_examples.rb +18 -18
  100. data/spec/api/query/faceting_examples.rb +80 -61
  101. data/spec/api/query/fulltext_examples.rb +194 -40
  102. data/spec/api/query/function_spec.rb +116 -13
  103. data/spec/api/query/geo_examples.rb +8 -12
  104. data/spec/api/query/group_spec.rb +27 -5
  105. data/spec/api/query/highlighting_examples.rb +26 -26
  106. data/spec/api/query/join_spec.rb +19 -0
  107. data/spec/api/query/more_like_this_spec.rb +40 -27
  108. data/spec/api/query/ordering_pagination_examples.rb +37 -23
  109. data/spec/api/query/scope_examples.rb +39 -39
  110. data/spec/api/query/spatial_examples.rb +3 -3
  111. data/spec/api/query/spellcheck_examples.rb +20 -0
  112. data/spec/api/query/standard_spec.rb +3 -1
  113. data/spec/api/query/stats_examples.rb +66 -0
  114. data/spec/api/query/text_field_scoping_examples.rb +5 -5
  115. data/spec/api/query/types_spec.rb +4 -4
  116. data/spec/api/search/cursor_paginated_collection_spec.rb +35 -0
  117. data/spec/api/search/dynamic_fields_spec.rb +4 -4
  118. data/spec/api/search/faceting_spec.rb +55 -52
  119. data/spec/api/search/highlighting_spec.rb +7 -7
  120. data/spec/api/search/hits_spec.rb +43 -29
  121. data/spec/api/search/paginated_collection_spec.rb +19 -18
  122. data/spec/api/search/results_spec.rb +13 -13
  123. data/spec/api/search/search_spec.rb +3 -3
  124. data/spec/api/search/stats_spec.rb +94 -0
  125. data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +23 -16
  126. data/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +16 -4
  127. data/spec/api/session_proxy/master_slave_session_proxy_spec.rb +10 -6
  128. data/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +11 -11
  129. data/spec/api/session_proxy/sharding_session_proxy_spec.rb +15 -14
  130. data/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +3 -3
  131. data/spec/api/session_proxy/spec_helper.rb +1 -1
  132. data/spec/api/session_proxy/thread_local_session_proxy_spec.rb +40 -26
  133. data/spec/api/session_spec.rb +78 -38
  134. data/spec/api/sunspot_spec.rb +7 -4
  135. data/spec/helpers/integration_helper.rb +11 -1
  136. data/spec/helpers/query_helper.rb +1 -1
  137. data/spec/helpers/search_helper.rb +30 -0
  138. data/spec/integration/atomic_updates_spec.rb +58 -0
  139. data/spec/integration/dynamic_fields_spec.rb +31 -20
  140. data/spec/integration/faceting_spec.rb +252 -39
  141. data/spec/integration/field_grouping_spec.rb +47 -15
  142. data/spec/integration/field_lists_spec.rb +57 -0
  143. data/spec/integration/geospatial_spec.rb +34 -8
  144. data/spec/integration/highlighting_spec.rb +8 -8
  145. data/spec/integration/indexing_spec.rb +7 -6
  146. data/spec/integration/join_spec.rb +45 -0
  147. data/spec/integration/keyword_search_spec.rb +68 -38
  148. data/spec/integration/local_search_spec.rb +4 -4
  149. data/spec/integration/more_like_this_spec.rb +7 -7
  150. data/spec/integration/scoped_search_spec.rb +193 -74
  151. data/spec/integration/spellcheck_spec.rb +119 -0
  152. data/spec/integration/stats_spec.rb +88 -0
  153. data/spec/integration/stored_fields_spec.rb +1 -1
  154. data/spec/integration/test_pagination.rb +4 -4
  155. data/spec/integration/unicode_spec.rb +1 -1
  156. data/spec/mocks/adapters.rb +36 -0
  157. data/spec/mocks/connection.rb +5 -3
  158. data/spec/mocks/photo.rb +32 -1
  159. data/spec/mocks/post.rb +18 -3
  160. data/spec/spec_helper.rb +13 -8
  161. data/sunspot.gemspec +6 -4
  162. data/tasks/rdoc.rake +22 -14
  163. metadata +101 -44
  164. data/lib/sunspot/dsl/field_group.rb +0 -57
  165. data/lib/sunspot/query/field_group.rb +0 -37
@@ -2,114 +2,133 @@ shared_examples_for "facetable query" do
2
2
  describe 'on fields' do
3
3
  it 'does not turn faceting on if no facet requested' do
4
4
  search
5
- connection.should_not have_last_search_with('facet')
5
+ expect(connection).not_to have_last_search_with('facet')
6
6
  end
7
7
 
8
8
  it 'turns faceting on if facet is requested' do
9
9
  search do
10
10
  facet :category_ids
11
11
  end
12
- connection.should have_last_search_with(:facet => 'true')
12
+ expect(connection).to have_last_search_with(:facet => 'true')
13
13
  end
14
14
 
15
15
  it 'requests single field facet' do
16
16
  search do
17
17
  facet :category_ids
18
18
  end
19
- connection.should have_last_search_with(:"facet.field" => %w(category_ids_im))
19
+ expect(connection).to have_last_search_with(:"facet.field" => %w(category_ids_im))
20
20
  end
21
21
 
22
22
  it 'requests multiple field facets' do
23
23
  search do
24
24
  facet :category_ids, :blog_id
25
25
  end
26
- connection.should have_last_search_with(:"facet.field" => %w(category_ids_im blog_id_i))
26
+ expect(connection).to have_last_search_with(:"facet.field" => %w(category_ids_im blog_id_i))
27
27
  end
28
28
 
29
29
  it 'sets facet sort by count' do
30
30
  search do
31
31
  facet :category_ids, :sort => :count
32
32
  end
33
- connection.should have_last_search_with(:"f.category_ids_im.facet.sort" => 'true')
33
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.sort" => 'true')
34
34
  end
35
35
 
36
36
  it 'sets facet sort by index' do
37
37
  search do
38
38
  facet :category_ids, :sort => :index
39
39
  end
40
- connection.should have_last_search_with(:"f.category_ids_im.facet.sort" => 'false')
40
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.sort" => 'false')
41
41
  end
42
42
 
43
43
  it 'raises ArgumentError if bogus facet sort provided' do
44
- lambda do
44
+ expect do
45
45
  search do
46
46
  facet :category_ids, :sort => :sideways
47
47
  end
48
- end.should raise_error(ArgumentError)
48
+ end.to raise_error(ArgumentError)
49
49
  end
50
50
 
51
51
  it 'sets the facet limit' do
52
52
  search do
53
53
  facet :category_ids, :limit => 10
54
54
  end
55
- connection.should have_last_search_with(:"f.category_ids_im.facet.limit" => 10)
55
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.limit" => 10)
56
56
  end
57
57
 
58
58
  it 'sets the facet offset' do
59
59
  search do
60
60
  facet :category_ids, :offset => 10
61
61
  end
62
- connection.should have_last_search_with(:"f.category_ids_im.facet.offset" => 10)
62
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.offset" => 10)
63
63
  end
64
64
 
65
65
  it 'sets the facet minimum count' do
66
66
  search do
67
67
  facet :category_ids, :minimum_count => 5
68
68
  end
69
- connection.should have_last_search_with(:"f.category_ids_im.facet.mincount" => 5)
69
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.mincount" => 5)
70
70
  end
71
71
 
72
72
  it 'sets the facet minimum count to zero if zeros are allowed' do
73
73
  search do
74
74
  facet :category_ids, :zeros => true
75
75
  end
76
- connection.should have_last_search_with(:"f.category_ids_im.facet.mincount" => 0)
76
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.mincount" => 0)
77
77
  end
78
78
 
79
79
  it 'sets the facet minimum count to one by default' do
80
80
  search do
81
81
  facet :category_ids
82
82
  end
83
- connection.should have_last_search_with(:"f.category_ids_im.facet.mincount" => 1)
83
+ expect(connection).to have_last_search_with(:"f.category_ids_im.facet.mincount" => 1)
84
84
  end
85
85
 
86
86
  it 'sets the facet prefix' do
87
87
  search do
88
88
  facet :title, :prefix => 'Test'
89
89
  end
90
- connection.should have_last_search_with(:"f.title_ss.facet.prefix" => 'Test')
90
+ expect(connection).to have_last_search_with(:"f.title_ss.facet.prefix" => 'Test')
91
91
  end
92
92
 
93
93
  it 'sends a query facet for :any extra' do
94
94
  search do
95
95
  facet :category_ids, :extra => :any
96
96
  end
97
- connection.should have_last_search_with(:"facet.query" => "category_ids_im:[* TO *]")
97
+ expect(connection).to have_last_search_with(:"facet.query" => "category_ids_im:[* TO *]")
98
98
  end
99
99
 
100
100
  it 'sends a query facet for :none extra' do
101
101
  search do
102
102
  facet :category_ids, :extra => :none
103
103
  end
104
- connection.should have_last_search_with(:"facet.query" => "-category_ids_im:[* TO *]")
104
+ expect(connection).to have_last_search_with(:"facet.query" => "-category_ids_im:[* TO *]")
105
105
  end
106
106
 
107
107
  it 'raises an ArgumentError if bogus extra is passed' do
108
- lambda do
108
+ expect do
109
109
  search do
110
110
  facet :category_ids, :extra => :bogus
111
111
  end
112
- end.should raise_error(ArgumentError)
112
+ end.to raise_error(ArgumentError)
113
+ end
114
+
115
+ it 'tags and excludes a geofilt in a field facet' do
116
+ search do
117
+ post_geo = with(:coordinates_new).in_radius(32, -68, 1)
118
+ facet(:coordinates_new, :exclude => post_geo) do
119
+ row(0..10) do
120
+ with(:coordinates_new).in_radius(32, -68, 10)
121
+ end
122
+ end
123
+ end
124
+ if connection.searches.last.has_key?(:"mlt.fl")
125
+ filter_tag = get_filter_tag('_query_:"{!geofilt sfield=coordinates_new_ll pt=32,-68 d=1}"')
126
+ else
127
+ filter_tag = get_filter_tag('{!geofilt sfield=coordinates_new_ll pt=32,-68 d=1}')
128
+ end
129
+ expect(connection).to have_last_search_with(
130
+ :"facet.query" => "{!ex=#{filter_tag}}_query_:\"{!geofilt sfield=coordinates_new_ll pt=32,-68 d=10}\""
131
+ )
113
132
  end
114
133
 
115
134
  it 'tags and excludes a scope filter in a field facet' do
@@ -118,7 +137,7 @@ shared_examples_for "facetable query" do
118
137
  facet(:blog_id, :exclude => blog_filter)
119
138
  end
120
139
  filter_tag = get_filter_tag('blog_id_i:1')
121
- connection.should have_last_search_with(
140
+ expect(connection).to have_last_search_with(
122
141
  :"facet.field" => %W({!ex=#{filter_tag}}blog_id_i)
123
142
  )
124
143
  end
@@ -132,7 +151,7 @@ shared_examples_for "facetable query" do
132
151
  facet(:blog_id, :exclude => blog_filter)
133
152
  end
134
153
  filter_tag = get_filter_tag('(blog_id_i:1 OR blog_id_i:2)')
135
- connection.should have_last_search_with(
154
+ expect(connection).to have_last_search_with(
136
155
  :"facet.field" => %W({!ex=#{filter_tag}}blog_id_i)
137
156
  )
138
157
  end
@@ -146,7 +165,7 @@ shared_examples_for "facetable query" do
146
165
  filter_tags = %w(blog_id_i:1 category_ids_im:2).map do |phrase|
147
166
  get_filter_tag(phrase)
148
167
  end.join(',')
149
- connection.should have_last_search_with(
168
+ expect(connection).to have_last_search_with(
150
169
  :"facet.field" => %W({!ex=#{filter_tags}}blog_id_i)
151
170
  )
152
171
  end
@@ -155,39 +174,39 @@ shared_examples_for "facetable query" do
155
174
  search do
156
175
  with(:blog_id, 1)
157
176
  end
158
- connection.should have_last_search_including(:fq, "blog_id_i:1")
177
+ expect(connection).to have_last_search_including(:fq, "blog_id_i:1")
159
178
  end
160
179
 
161
180
  it 'names a field facet' do
162
181
  search do
163
182
  facet(:blog_id, :name => :blog)
164
183
  end
165
- connection.should have_last_search_including(:"facet.field", "{!key=blog}blog_id_i")
184
+ expect(connection).to have_last_search_including(:"facet.field", "{!key=blog}blog_id_i")
166
185
  end
167
186
 
168
187
  it 'uses the custom field facet name in facet option parameters' do
169
188
  search do
170
189
  facet(:blog_id, :name => :blog, :sort => :count)
171
190
  end
172
- connection.should have_last_search_with(:"f.blog.facet.sort" => 'true')
191
+ expect(connection).to have_last_search_with(:"f.blog.facet.sort" => 'true')
173
192
  end
174
193
 
175
194
  it 'raises an ArgumentError if exclusion attempted on a restricted field facet' do
176
- lambda do
195
+ expect do
177
196
  search do
178
197
  blog_filter = with(:blog_id, 1)
179
198
  facet(:blog_id, :only => 1, :exclude => blog_filter)
180
199
  end
181
- end.should raise_error(ArgumentError)
200
+ end.to raise_error(ArgumentError)
182
201
  end
183
202
 
184
203
  it 'raises an ArgumentError if exclusion attempted on a facet with :extra' do
185
- lambda do
204
+ expect do
186
205
  search do
187
206
  blog_filter = with(:blog_id, 1)
188
207
  facet(:blog_id, :extra => :all, :exclude => blog_filter)
189
208
  end
190
- end.should raise_error(ArgumentError)
209
+ end.to raise_error(ArgumentError)
191
210
  end
192
211
  end
193
212
 
@@ -201,21 +220,21 @@ shared_examples_for "facetable query" do
201
220
  search do |query|
202
221
  query.facet :published_at
203
222
  end
204
- connection.should_not have_last_search_with(:"facet.date")
223
+ expect(connection).not_to have_last_search_with(:"facet.date")
205
224
  end
206
225
 
207
226
  it 'sets the facet to a date facet if time range is specified' do
208
227
  search do |query|
209
228
  query.facet :published_at, :time_range => @time_range
210
229
  end
211
- connection.should have_last_search_with(:"facet.date" => ['published_at_dt'])
230
+ expect(connection).to have_last_search_with(:"facet.date" => ['published_at_dt'])
212
231
  end
213
232
 
214
233
  it 'sets the facet start and end' do
215
234
  search do |query|
216
235
  query.facet :published_at, :time_range => @time_range
217
236
  end
218
- connection.should have_last_search_with(
237
+ expect(connection).to have_last_search_with(
219
238
  :"f.published_at_dt.facet.date.start" => '2009-06-01T04:00:00Z',
220
239
  :"f.published_at_dt.facet.date.end" => '2009-07-01T04:00:00Z'
221
240
  )
@@ -225,22 +244,22 @@ shared_examples_for "facetable query" do
225
244
  search do |query|
226
245
  query.facet :published_at, :time_range => @time_range
227
246
  end
228
- connection.should have_last_search_with(:"f.published_at_dt.facet.date.gap" => "+86400SECONDS")
247
+ expect(connection).to have_last_search_with(:"f.published_at_dt.facet.date.gap" => "+86400SECONDS")
229
248
  end
230
249
 
231
250
  it 'uses custom time interval' do
232
251
  search do |query|
233
252
  query.facet :published_at, :time_range => @time_range, :time_interval => 3600
234
253
  end
235
- connection.should have_last_search_with(:"f.published_at_dt.facet.date.gap" => "+3600SECONDS")
254
+ expect(connection).to have_last_search_with(:"f.published_at_dt.facet.date.gap" => "+3600SECONDS")
236
255
  end
237
256
 
238
257
  it 'does not allow date faceting on a non-date field' do
239
- lambda do
258
+ expect do
240
259
  search do |query|
241
260
  query.facet :blog_id, :time_range => @time_range
242
261
  end
243
- end.should raise_error(ArgumentError)
262
+ end.to raise_error(ArgumentError)
244
263
  end
245
264
  end
246
265
 
@@ -253,21 +272,21 @@ shared_examples_for "facetable query" do
253
272
  search do |query|
254
273
  query.facet :average_rating
255
274
  end
256
- connection.should_not have_last_search_with(:"facet.range")
275
+ expect(connection).not_to have_last_search_with(:"facet.range")
257
276
  end
258
277
 
259
278
  it 'sets the facet to a range facet if the range is specified' do
260
279
  search do |query|
261
280
  query.facet :average_rating, :range => @range
262
281
  end
263
- connection.should have_last_search_with(:"facet.range" => ['average_rating_ft'])
282
+ expect(connection).to have_last_search_with(:"facet.range" => ['average_rating_ft'])
264
283
  end
265
284
 
266
285
  it 'sets the facet start and end' do
267
286
  search do |query|
268
287
  query.facet :average_rating, :range => @range
269
288
  end
270
- connection.should have_last_search_with(
289
+ expect(connection).to have_last_search_with(
271
290
  :"f.average_rating_ft.facet.range.start" => '2.0',
272
291
  :"f.average_rating_ft.facet.range.end" => '4.0'
273
292
  )
@@ -277,14 +296,14 @@ shared_examples_for "facetable query" do
277
296
  search do |query|
278
297
  query.facet :average_rating, :range => @range
279
298
  end
280
- connection.should have_last_search_with(:"f.average_rating_ft.facet.range.gap" => "10")
299
+ expect(connection).to have_last_search_with(:"f.average_rating_ft.facet.range.gap" => "10")
281
300
  end
282
301
 
283
302
  it 'uses custom range interval' do
284
303
  search do |query|
285
304
  query.facet :average_rating, :range => @range, :range_interval => 1
286
305
  end
287
- connection.should have_last_search_with(:"f.average_rating_ft.facet.range.gap" => "1")
306
+ expect(connection).to have_last_search_with(:"f.average_rating_ft.facet.range.gap" => "1")
288
307
  end
289
308
 
290
309
  it 'tags and excludes a scope filter in a range facet' do
@@ -293,7 +312,7 @@ shared_examples_for "facetable query" do
293
312
  query.facet(:average_rating, :range => @range, :exclude => blog_filter)
294
313
  end
295
314
  filter_tag = get_filter_tag('blog_id_i:1')
296
- connection.should have_last_search_with(
315
+ expect(connection).to have_last_search_with(
297
316
  :"facet.range" => %W({!ex=#{filter_tag}}average_rating_ft)
298
317
  )
299
318
  end
@@ -302,15 +321,15 @@ shared_examples_for "facetable query" do
302
321
  search do |query|
303
322
  query.facet :average_rating, :range => @range, :include => :edge
304
323
  end
305
- connection.should have_last_search_with(:"f.average_rating_ft.facet.range.include" => "edge")
324
+ expect(connection).to have_last_search_with(:"f.average_rating_ft.facet.range.include" => "edge")
306
325
  end
307
326
 
308
327
  it 'does not allow date faceting on a non-continuous field' do
309
- lambda do
328
+ expect do
310
329
  search do |query|
311
330
  query.facet :title, :range => @range
312
331
  end
313
- end.should raise_error(ArgumentError)
332
+ end.to raise_error(ArgumentError)
314
333
  end
315
334
  end
316
335
 
@@ -323,7 +342,7 @@ shared_examples_for "facetable query" do
323
342
  end
324
343
  end
325
344
  end
326
- connection.should have_last_search_with(:facet => 'true')
345
+ expect(connection).to have_last_search_with(:facet => 'true')
327
346
  end
328
347
 
329
348
  it 'facets by query' do
@@ -334,7 +353,7 @@ shared_examples_for "facetable query" do
334
353
  end
335
354
  end
336
355
  end
337
- connection.should have_last_search_with(:"facet.query" => 'average_rating_ft:[4\.0 TO 5\.0]')
356
+ expect(connection).to have_last_search_with(:"facet.query" => 'average_rating_ft:[4\.0 TO 5\.0]')
338
357
  end
339
358
 
340
359
  it 'requests multiple query facets' do
@@ -348,7 +367,7 @@ shared_examples_for "facetable query" do
348
367
  end
349
368
  end
350
369
  end
351
- connection.should have_last_search_with(
370
+ expect(connection).to have_last_search_with(
352
371
  :"facet.query" => [
353
372
  'average_rating_ft:[3\.0 TO 4\.0]',
354
373
  'average_rating_ft:[4\.0 TO 5\.0]'
@@ -365,7 +384,7 @@ shared_examples_for "facetable query" do
365
384
  end
366
385
  end
367
386
  end
368
- connection.should have_last_search_with(
387
+ expect(connection).to have_last_search_with(
369
388
  :"facet.query" => '(category_ids_im:1 AND blog_id_i:2)'
370
389
  )
371
390
  end
@@ -381,7 +400,7 @@ shared_examples_for "facetable query" do
381
400
  end
382
401
  end
383
402
  end
384
- connection.should have_last_search_with(
403
+ expect(connection).to have_last_search_with(
385
404
  :"facet.query" => '(category_ids_im:1 OR blog_id_i:2)'
386
405
  )
387
406
  end
@@ -390,7 +409,7 @@ shared_examples_for "facetable query" do
390
409
  search do
391
410
  facet :category_ids, :only => [1, 3]
392
411
  end
393
- connection.should have_last_search_with(
412
+ expect(connection).to have_last_search_with(
394
413
  :"facet.query" => ['category_ids_im:1', 'category_ids_im:3']
395
414
  )
396
415
  end
@@ -399,7 +418,7 @@ shared_examples_for "facetable query" do
399
418
  search do
400
419
  facet :published_at, :only => [Time.utc(2009, 8, 28, 15, 33), Time.utc(2008,8, 28, 15, 33)]
401
420
  end
402
- connection.should have_last_search_with(
421
+ expect(connection).to have_last_search_with(
403
422
  :"facet.query" => [
404
423
  'published_at_dt:2009\-08\-28T15\:33\:00Z',
405
424
  'published_at_dt:2008\-08\-28T15\:33\:00Z'
@@ -411,7 +430,7 @@ shared_examples_for "facetable query" do
411
430
  search do
412
431
  facet(:foo) {}
413
432
  end
414
- connection.should_not have_last_search_with(:"facet.query")
433
+ expect(connection).not_to have_last_search_with(:"facet.query")
415
434
  end
416
435
 
417
436
  it 'ignores facet query row with no restrictions' do
@@ -423,7 +442,7 @@ shared_examples_for "facetable query" do
423
442
  row(:baz) {}
424
443
  end
425
444
  end
426
- connection.searches.last[:"facet.query"].should be_a(String)
445
+ expect(connection.searches.last[:"facet.query"]).to be_a(String)
427
446
  end
428
447
 
429
448
  it 'tags and excludes a scope filter in a query facet' do
@@ -436,7 +455,7 @@ shared_examples_for "facetable query" do
436
455
  end
437
456
  end
438
457
  filter_tag = get_filter_tag('blog_id_i:1')
439
- connection.should have_last_search_with(
458
+ expect(connection).to have_last_search_with(
440
459
  :"facet.query" => "{!ex=#{filter_tag}}category_ids_im:1"
441
460
  )
442
461
  end
@@ -454,7 +473,7 @@ shared_examples_for "facetable query" do
454
473
  end
455
474
  end
456
475
  filter_tag = get_filter_tag('(blog_id_i:1 OR blog_id_i:2)')
457
- connection.should have_last_search_with(
476
+ expect(connection).to have_last_search_with(
458
477
  :"facet.query" => "{!ex=#{filter_tag}}category_ids_im:1"
459
478
  )
460
479
  end
@@ -472,7 +491,7 @@ shared_examples_for "facetable query" do
472
491
  filter_tags = %w(blog_id_i:1 category_ids_im:2).map do |phrase|
473
492
  get_filter_tag(phrase)
474
493
  end.join(',')
475
- connection.should have_last_search_with(
494
+ expect(connection).to have_last_search_with(
476
495
  :"facet.query" => "{!ex=#{filter_tags}}category_ids_im:1"
477
496
  )
478
497
  end
@@ -484,25 +503,25 @@ shared_examples_for "facetable query" do
484
503
  row(:bar) {}
485
504
  end
486
505
  end
487
- connection.should_not have_last_search_with(:"facet.query")
506
+ expect(connection).not_to have_last_search_with(:"facet.query")
488
507
  end
489
508
 
490
509
  it 'does not allow 0 arguments to facet method with block' do
491
- lambda do
510
+ expect do
492
511
  search do
493
512
  facet do
494
513
  end
495
514
  end
496
- end.should raise_error(ArgumentError)
515
+ end.to raise_error(ArgumentError)
497
516
  end
498
517
 
499
518
  it 'does not allow more than 1 argument to facet method with block' do
500
- lambda do
519
+ expect do
501
520
  search do
502
521
  facet :foo, :bar do
503
522
  end
504
523
  end
505
- end.should raise_error(ArgumentError)
524
+ end.to raise_error(ArgumentError)
506
525
  end
507
526
  end
508
527
  end