sunspot 2.2.7 → 2.2.8

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 (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
@@ -7,8 +7,8 @@ describe 'indexer', :type => :indexer do
7
7
  Object.class_eval { remove_const(:ReloadableClass) }
8
8
  Object::ReloadableClass = Class.new(MockRecord)
9
9
  Sunspot.setup(ReloadableClass) {}
10
- lambda do
10
+ expect do
11
11
  Sunspot.search(ReloadableClass) { with(:title, 'title') }
12
- end.should raise_error(Sunspot::UnrecognizedFieldError)
12
+ end.to raise_error(Sunspot::UnrecognizedFieldError)
13
13
  end
14
14
  end
@@ -12,11 +12,11 @@ shared_examples_for "query with advanced manipulation" do
12
12
  end
13
13
 
14
14
  it "modifies existing param" do
15
- connection.should have_last_search_with(:rows => 40)
15
+ expect(connection).to have_last_search_with(:rows => 40)
16
16
  end
17
17
 
18
18
  it "adds new param" do
19
- connection.should have_last_search_with(:qt => 'complicated')
19
+ expect(connection).to have_last_search_with(:qt => 'complicated')
20
20
  end
21
21
  end
22
22
 
@@ -29,7 +29,7 @@ shared_examples_for "query with advanced manipulation" do
29
29
  end
30
30
 
31
31
  it 'should use specified request handler' do
32
- connection.should have_last_search_with({})
32
+ expect(connection).to have_last_search_with({})
33
33
  end
34
34
  end
35
35
  end
@@ -6,7 +6,7 @@ shared_examples_for "query with connective scope" do
6
6
  with :blog_id, 2
7
7
  end
8
8
  end
9
- connection.should have_last_search_including(
9
+ expect(connection).to have_last_search_including(
10
10
  :fq, '(category_ids_im:1 OR blog_id_i:2)'
11
11
  )
12
12
  end
@@ -21,7 +21,7 @@ shared_examples_for "query with connective scope" do
21
21
  end
22
22
  end
23
23
  end
24
- connection.should have_last_search_including(
24
+ expect(connection).to have_last_search_including(
25
25
  :fq,
26
26
  '(blog_id_i:2 OR (category_ids_im:1 AND average_rating_ft:{3\.0 TO *}))'
27
27
  )
@@ -37,7 +37,7 @@ shared_examples_for "query with connective scope" do
37
37
  end
38
38
  end
39
39
  end
40
- connection.should have_last_search_including(
40
+ expect(connection).to have_last_search_including(
41
41
  :fq, '(category_ids_im:1 OR (-average_rating_ft:{3\.0 TO *} AND blog_id_i:1))'
42
42
  )
43
43
  end
@@ -49,7 +49,7 @@ shared_examples_for "query with connective scope" do
49
49
  with :category_ids, 1
50
50
  end
51
51
  end
52
- connection.should have_last_search_including(
52
+ expect(connection).to have_last_search_including(
53
53
  :fq, 'blog_id_i:2', 'category_ids_im:1'
54
54
  )
55
55
  end
@@ -61,7 +61,7 @@ shared_examples_for "query with connective scope" do
61
61
  without(:average_rating).greater_than(3.0)
62
62
  end
63
63
  end
64
- connection.should have_last_search_including(
64
+ expect(connection).to have_last_search_including(
65
65
  :fq, '-(-category_ids_im:1 AND average_rating_ft:{3\.0 TO *})'
66
66
  )
67
67
  end
@@ -79,7 +79,7 @@ shared_examples_for "query with connective scope" do
79
79
  end
80
80
  end
81
81
  end
82
- connection.should have_last_search_including(
82
+ expect(connection).to have_last_search_including(
83
83
  :fq, '-(title_ss:Yes AND -(blog_id_i:1 AND -(-category_ids_im:4 AND average_rating_ft:2\.0)))'
84
84
  )
85
85
  end
@@ -96,7 +96,7 @@ shared_examples_for "query with connective scope" do
96
96
  end
97
97
  end
98
98
  end
99
- connection.should have_last_search_including(
99
+ expect(connection).to have_last_search_including(
100
100
  :fq, '(title_ss:Yes OR (blog_id_i:1 AND -(-category_ids_im:4 AND average_rating_ft:2\.0)))'
101
101
  )
102
102
  end
@@ -123,7 +123,7 @@ shared_examples_for "query with connective scope" do
123
123
  end
124
124
  end
125
125
  end
126
- connection.should have_last_search_including(
126
+ expect(connection).to have_last_search_including(
127
127
  :fq, '(title_ss:Yes OR blog_id_i:1 OR category_ids_im:4)'
128
128
  )
129
129
  end
@@ -136,7 +136,7 @@ shared_examples_for "query with connective scope" do
136
136
  with(:category_ids, 1)
137
137
  end
138
138
  end
139
- connection.should have_last_search_including(
139
+ expect(connection).to have_last_search_including(
140
140
  :fq, "-(id:(Post\\ #{post.id}) AND -category_ids_im:1)"
141
141
  )
142
142
  end
@@ -148,7 +148,7 @@ shared_examples_for "query with connective scope" do
148
148
  with(:average_rating).greater_than(3.0)
149
149
  end
150
150
  end
151
- connection.should have_last_search_including(
151
+ expect(connection).to have_last_search_including(
152
152
  :fq, '-(average_rating_ft:[* TO *] AND -average_rating_ft:{3\.0 TO *})'
153
153
  )
154
154
  end
@@ -161,7 +161,7 @@ shared_examples_for "query with connective scope" do
161
161
  with(:average_rating).greater_than(3.0)
162
162
  end
163
163
  end
164
- connection.should have_last_search_including(
164
+ expect(connection).to have_last_search_including(
165
165
  :fq, "(id:(Post\\ #{post.id}) OR average_rating_ft:{3\\.0 TO *})"
166
166
  )
167
167
  end
@@ -175,7 +175,7 @@ shared_examples_for "query with connective scope" do
175
175
  with(:blog_id, 1)
176
176
  end
177
177
  end
178
- connection.should have_last_search_including(
178
+ expect(connection).to have_last_search_including(
179
179
  :fq, '(title_text:test* OR blog_id_i:1)'
180
180
  )
181
181
  end
@@ -184,7 +184,7 @@ shared_examples_for "query with connective scope" do
184
184
  search do
185
185
  any_of {}
186
186
  end
187
- connection.should_not have_last_search_including(:fq, '')
187
+ expect(connection).not_to have_last_search_including(:fq, '')
188
188
  end
189
189
 
190
190
  it 'creates a conjunction of in_radius queries' do
@@ -194,8 +194,20 @@ shared_examples_for "query with connective scope" do
194
194
  with(:coordinates_new).in_radius(42, 56, 50)
195
195
  end
196
196
  end
197
- connection.should have_last_search_including(
197
+ expect(connection).to have_last_search_including(
198
198
  :fq, '(_query_:"{!geofilt sfield=coordinates_new_ll pt=23,-46 d=100}" OR _query_:"{!geofilt sfield=coordinates_new_ll pt=42,56 d=50}")'
199
199
  )
200
200
  end
201
+
202
+ it 'creates a conjunction of in_bounding_box queries' do
203
+ search do
204
+ any_of do
205
+ with(:coordinates_new).in_bounding_box([23, -46], [25, -44])
206
+ with(:coordinates_new).in_bounding_box([42, 56], [43, 58])
207
+ end
208
+ end
209
+ expect(connection).to have_last_search_including(
210
+ :fq, '(coordinates_new_ll:[23,-46 TO 25,-44] OR coordinates_new_ll:[42,56 TO 43,58])'
211
+ )
212
+ end
201
213
  end
@@ -1,28 +1,36 @@
1
1
  require File.expand_path('spec_helper', File.dirname(__FILE__))
2
2
 
3
3
  describe 'query DSL', :type => :query do
4
+ let(:blog_id) { 1 }
5
+
4
6
  it 'should allow building search using block argument rather than instance_eval' do
5
- @blog_id = 1
6
7
  session.search Post do |query|
7
8
  query.field_list [:blog_id, :title]
8
- query.with(:blog_id, @blog_id)
9
+ query.with(:blog_id, blog_id)
9
10
  end
10
- connection.should have_last_search_including(:fq, 'blog_id_i:1')
11
- connection.should have_last_search_with(fl: [:blog_id, :title])
11
+ expect(connection).to have_last_search_including(:fq, 'blog_id_i:1')
12
+ expect(connection).to have_last_search_with(fl: [:id, :blog_id_i, :title_ss])
12
13
  end
13
14
 
14
15
  it 'should allow field_list specified as arguments' do
15
- @blog_id = 1
16
16
  session.search Post do |query|
17
17
  query.field_list :blog_id, :title
18
- query.with(:blog_id, @blog_id)
18
+ query.with(:blog_id, blog_id)
19
+ end
20
+ expect(connection).to have_last_search_with(fl: [:id, :blog_id_i, :title_ss])
21
+ end
22
+
23
+ it 'should allow to skip stored fields retrieval' do
24
+ session.search Post do |query|
25
+ query.with(:blog_id, blog_id)
26
+ query.without_stored_fields
19
27
  end
20
- connection.should have_last_search_with(fl: [:blog_id, :title])
28
+ expect(connection).to have_last_search_with(fl: [:id])
21
29
  end
22
30
 
23
31
  it 'should accept a block in the #new_search method' do
24
- search = session.new_search(Post) { with(:blog_id, 1) }
32
+ search = session.new_search(Post) { with(:blog_id, blog_id) }
25
33
  search.execute
26
- connection.should have_last_search_including(:fq, 'blog_id_i:1')
34
+ expect(connection).to have_last_search_including(:fq, 'blog_id_i:1')
27
35
  end
28
36
  end
@@ -5,7 +5,7 @@ shared_examples_for "query with dynamic field support" do
5
5
  with :test, 'string'
6
6
  end
7
7
  end
8
- connection.should have_last_search_including(:fq, 'custom_string\:test_ss:string')
8
+ expect(connection).to have_last_search_including(:fq, 'custom_string\:test_ss:string')
9
9
  end
10
10
 
11
11
  it 'restricts by dynamic integer field with less than restriction' do
@@ -14,7 +14,7 @@ shared_examples_for "query with dynamic field support" do
14
14
  with(:test).less_than(1)
15
15
  end
16
16
  end
17
- connection.should have_last_search_including(:fq, 'custom_integer\:test_i:{* TO 1}')
17
+ expect(connection).to have_last_search_including(:fq, 'custom_integer\:test_i:{* TO 1}')
18
18
  end
19
19
 
20
20
  it 'restricts by dynamic float field with between restriction' do
@@ -23,7 +23,7 @@ shared_examples_for "query with dynamic field support" do
23
23
  with(:test).between(2.2..3.3)
24
24
  end
25
25
  end
26
- connection.should have_last_search_including(:fq, 'custom_float\:test_fm:[2\.2 TO 3\.3]')
26
+ expect(connection).to have_last_search_including(:fq, 'custom_float\:test_fm:[2\.2 TO 3\.3]')
27
27
  end
28
28
 
29
29
  it 'restricts by dynamic time field with any of restriction' do
@@ -33,7 +33,7 @@ shared_examples_for "query with dynamic field support" do
33
33
  Time.parse('2009-02-13 18:00:00 UTC')])
34
34
  end
35
35
  end
36
- connection.should have_last_search_including(:fq, 'custom_time\:test_d:(2009\-02\-10T14\:00\:00Z OR 2009\-02\-13T18\:00\:00Z)')
36
+ expect(connection).to have_last_search_including(:fq, 'custom_time\:test_d:(2009\-02\-10T14\:00\:00Z OR 2009\-02\-13T18\:00\:00Z)')
37
37
  end
38
38
 
39
39
  it 'restricts by dynamic boolean field with equality restriction' do
@@ -42,7 +42,7 @@ shared_examples_for "query with dynamic field support" do
42
42
  with :test, false
43
43
  end
44
44
  end
45
- connection.should have_last_search_including(:fq, 'custom_boolean\:test_b:false')
45
+ expect(connection).to have_last_search_including(:fq, 'custom_boolean\:test_b:false')
46
46
  end
47
47
 
48
48
  it 'negates a dynamic field restriction' do
@@ -51,7 +51,7 @@ shared_examples_for "query with dynamic field support" do
51
51
  without :test, 'foo'
52
52
  end
53
53
  end
54
- connection.should have_last_search_including(:fq, '-custom_string\:test_ss:foo')
54
+ expect(connection).to have_last_search_including(:fq, '-custom_string\:test_ss:foo')
55
55
  end
56
56
 
57
57
  it 'scopes by a dynamic field inside a disjunction' do
@@ -63,7 +63,7 @@ shared_examples_for "query with dynamic field support" do
63
63
  with :title, 'bar'
64
64
  end
65
65
  end
66
- connection.should have_last_search_including(
66
+ expect(connection).to have_last_search_including(
67
67
  :fq, '(custom_string\:test_ss:foo OR title_ss:bar)'
68
68
  )
69
69
  end
@@ -74,7 +74,7 @@ shared_examples_for "query with dynamic field support" do
74
74
  order_by :test, :desc
75
75
  end
76
76
  end
77
- connection.should have_last_search_with(:sort => 'custom_integer:test_i desc')
77
+ expect(connection).to have_last_search_with(:sort => 'custom_integer:test_i desc')
78
78
  end
79
79
 
80
80
  it 'orders by a dynamic field and static field, with given precedence' do
@@ -84,25 +84,25 @@ shared_examples_for "query with dynamic field support" do
84
84
  end
85
85
  order_by :sort_title, :asc
86
86
  end
87
- connection.should have_last_search_with(:sort => 'custom_integer:test_i desc, sort_title_s asc')
87
+ expect(connection).to have_last_search_with(:sort => 'custom_integer:test_i desc, sort_title_s asc')
88
88
  end
89
89
 
90
90
  it 'raises an UnrecognizedFieldError if an unknown dynamic field is searched by' do
91
- lambda do
91
+ expect do
92
92
  search do
93
93
  dynamic(:bogus) { with :some, 'value' }
94
94
  end
95
- end.should raise_error(Sunspot::UnrecognizedFieldError)
95
+ end.to raise_error(Sunspot::UnrecognizedFieldError)
96
96
  end
97
97
 
98
98
  it 'raises a NoMethodError if pagination is attempted in a dynamic query' do
99
- lambda do
99
+ expect do
100
100
  search do
101
101
  dynamic :custom_string do
102
102
  paginate :page => 3, :per_page => 10
103
103
  end
104
104
  end
105
- end.should raise_error(NoMethodError)
105
+ end.to raise_error(NoMethodError)
106
106
  end
107
107
 
108
108
  it 'requests field facet on dynamic field' do
@@ -111,7 +111,7 @@ shared_examples_for "query with dynamic field support" do
111
111
  facet(:test)
112
112
  end
113
113
  end
114
- connection.should have_last_search_including(:"facet.field", 'custom_string:test_ss')
114
+ expect(connection).to have_last_search_including(:"facet.field", 'custom_string:test_ss')
115
115
  end
116
116
 
117
117
  it 'requests named field facet on dynamic field' do
@@ -120,7 +120,7 @@ shared_examples_for "query with dynamic field support" do
120
120
  facet(:test, :name => :bogus)
121
121
  end
122
122
  end
123
- connection.should have_last_search_including(:"facet.field", '{!key=bogus}custom_string:test_ss')
123
+ expect(connection).to have_last_search_including(:"facet.field", '{!key=bogus}custom_string:test_ss')
124
124
  end
125
125
 
126
126
  it 'requests query facet with internal dynamic field' do
@@ -133,7 +133,7 @@ shared_examples_for "query with dynamic field support" do
133
133
  end
134
134
  end
135
135
  end
136
- connection.should have_last_search_with(
136
+ expect(connection).to have_last_search_with(
137
137
  :"facet.query" => 'custom_string\:test_ss:foo'
138
138
  )
139
139
  end
@@ -148,7 +148,7 @@ shared_examples_for "query with dynamic field support" do
148
148
  end
149
149
  end
150
150
  end
151
- connection.should have_last_search_including(
151
+ expect(connection).to have_last_search_including(
152
152
  :"facet.query",
153
153
  'custom_string\:test_ss:foo'
154
154
  )
@@ -160,6 +160,6 @@ shared_examples_for "query with dynamic field support" do
160
160
  with(:test, 1.23)
161
161
  end
162
162
  end
163
- connection.should have_last_search_including(:fq, 'custom_float\\:test_fm:1\\.23')
163
+ expect(connection).to have_last_search_including(:fq, 'custom_float\\:test_fm:1\\.23')
164
164
  end
165
165
  end
@@ -2,114 +2,114 @@ 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
113
  end
114
114
 
115
115
  it 'tags and excludes a geofilt in a field facet' do
@@ -126,7 +126,7 @@ shared_examples_for "facetable query" do
126
126
  else
127
127
  filter_tag = get_filter_tag('{!geofilt sfield=coordinates_new_ll pt=32,-68 d=1}')
128
128
  end
129
- connection.should have_last_search_with(
129
+ expect(connection).to have_last_search_with(
130
130
  :"facet.query" => "{!ex=#{filter_tag}}_query_:\"{!geofilt sfield=coordinates_new_ll pt=32,-68 d=10}\""
131
131
  )
132
132
  end
@@ -137,7 +137,7 @@ shared_examples_for "facetable query" do
137
137
  facet(:blog_id, :exclude => blog_filter)
138
138
  end
139
139
  filter_tag = get_filter_tag('blog_id_i:1')
140
- connection.should have_last_search_with(
140
+ expect(connection).to have_last_search_with(
141
141
  :"facet.field" => %W({!ex=#{filter_tag}}blog_id_i)
142
142
  )
143
143
  end
@@ -151,7 +151,7 @@ shared_examples_for "facetable query" do
151
151
  facet(:blog_id, :exclude => blog_filter)
152
152
  end
153
153
  filter_tag = get_filter_tag('(blog_id_i:1 OR blog_id_i:2)')
154
- connection.should have_last_search_with(
154
+ expect(connection).to have_last_search_with(
155
155
  :"facet.field" => %W({!ex=#{filter_tag}}blog_id_i)
156
156
  )
157
157
  end
@@ -165,7 +165,7 @@ shared_examples_for "facetable query" do
165
165
  filter_tags = %w(blog_id_i:1 category_ids_im:2).map do |phrase|
166
166
  get_filter_tag(phrase)
167
167
  end.join(',')
168
- connection.should have_last_search_with(
168
+ expect(connection).to have_last_search_with(
169
169
  :"facet.field" => %W({!ex=#{filter_tags}}blog_id_i)
170
170
  )
171
171
  end
@@ -174,39 +174,39 @@ shared_examples_for "facetable query" do
174
174
  search do
175
175
  with(:blog_id, 1)
176
176
  end
177
- connection.should have_last_search_including(:fq, "blog_id_i:1")
177
+ expect(connection).to have_last_search_including(:fq, "blog_id_i:1")
178
178
  end
179
179
 
180
180
  it 'names a field facet' do
181
181
  search do
182
182
  facet(:blog_id, :name => :blog)
183
183
  end
184
- 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")
185
185
  end
186
186
 
187
187
  it 'uses the custom field facet name in facet option parameters' do
188
188
  search do
189
189
  facet(:blog_id, :name => :blog, :sort => :count)
190
190
  end
191
- connection.should have_last_search_with(:"f.blog.facet.sort" => 'true')
191
+ expect(connection).to have_last_search_with(:"f.blog.facet.sort" => 'true')
192
192
  end
193
193
 
194
194
  it 'raises an ArgumentError if exclusion attempted on a restricted field facet' do
195
- lambda do
195
+ expect do
196
196
  search do
197
197
  blog_filter = with(:blog_id, 1)
198
198
  facet(:blog_id, :only => 1, :exclude => blog_filter)
199
199
  end
200
- end.should raise_error(ArgumentError)
200
+ end.to raise_error(ArgumentError)
201
201
  end
202
202
 
203
203
  it 'raises an ArgumentError if exclusion attempted on a facet with :extra' do
204
- lambda do
204
+ expect do
205
205
  search do
206
206
  blog_filter = with(:blog_id, 1)
207
207
  facet(:blog_id, :extra => :all, :exclude => blog_filter)
208
208
  end
209
- end.should raise_error(ArgumentError)
209
+ end.to raise_error(ArgumentError)
210
210
  end
211
211
  end
212
212
 
@@ -220,21 +220,21 @@ shared_examples_for "facetable query" do
220
220
  search do |query|
221
221
  query.facet :published_at
222
222
  end
223
- connection.should_not have_last_search_with(:"facet.date")
223
+ expect(connection).not_to have_last_search_with(:"facet.date")
224
224
  end
225
225
 
226
226
  it 'sets the facet to a date facet if time range is specified' do
227
227
  search do |query|
228
228
  query.facet :published_at, :time_range => @time_range
229
229
  end
230
- connection.should have_last_search_with(:"facet.date" => ['published_at_dt'])
230
+ expect(connection).to have_last_search_with(:"facet.date" => ['published_at_dt'])
231
231
  end
232
232
 
233
233
  it 'sets the facet start and end' do
234
234
  search do |query|
235
235
  query.facet :published_at, :time_range => @time_range
236
236
  end
237
- connection.should have_last_search_with(
237
+ expect(connection).to have_last_search_with(
238
238
  :"f.published_at_dt.facet.date.start" => '2009-06-01T04:00:00Z',
239
239
  :"f.published_at_dt.facet.date.end" => '2009-07-01T04:00:00Z'
240
240
  )
@@ -244,22 +244,22 @@ shared_examples_for "facetable query" do
244
244
  search do |query|
245
245
  query.facet :published_at, :time_range => @time_range
246
246
  end
247
- 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")
248
248
  end
249
249
 
250
250
  it 'uses custom time interval' do
251
251
  search do |query|
252
252
  query.facet :published_at, :time_range => @time_range, :time_interval => 3600
253
253
  end
254
- 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")
255
255
  end
256
256
 
257
257
  it 'does not allow date faceting on a non-date field' do
258
- lambda do
258
+ expect do
259
259
  search do |query|
260
260
  query.facet :blog_id, :time_range => @time_range
261
261
  end
262
- end.should raise_error(ArgumentError)
262
+ end.to raise_error(ArgumentError)
263
263
  end
264
264
  end
265
265
 
@@ -272,21 +272,21 @@ shared_examples_for "facetable query" do
272
272
  search do |query|
273
273
  query.facet :average_rating
274
274
  end
275
- connection.should_not have_last_search_with(:"facet.range")
275
+ expect(connection).not_to have_last_search_with(:"facet.range")
276
276
  end
277
277
 
278
278
  it 'sets the facet to a range facet if the range is specified' do
279
279
  search do |query|
280
280
  query.facet :average_rating, :range => @range
281
281
  end
282
- connection.should have_last_search_with(:"facet.range" => ['average_rating_ft'])
282
+ expect(connection).to have_last_search_with(:"facet.range" => ['average_rating_ft'])
283
283
  end
284
284
 
285
285
  it 'sets the facet start and end' do
286
286
  search do |query|
287
287
  query.facet :average_rating, :range => @range
288
288
  end
289
- connection.should have_last_search_with(
289
+ expect(connection).to have_last_search_with(
290
290
  :"f.average_rating_ft.facet.range.start" => '2.0',
291
291
  :"f.average_rating_ft.facet.range.end" => '4.0'
292
292
  )
@@ -296,14 +296,14 @@ shared_examples_for "facetable query" do
296
296
  search do |query|
297
297
  query.facet :average_rating, :range => @range
298
298
  end
299
- 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")
300
300
  end
301
301
 
302
302
  it 'uses custom range interval' do
303
303
  search do |query|
304
304
  query.facet :average_rating, :range => @range, :range_interval => 1
305
305
  end
306
- 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")
307
307
  end
308
308
 
309
309
  it 'tags and excludes a scope filter in a range facet' do
@@ -312,7 +312,7 @@ shared_examples_for "facetable query" do
312
312
  query.facet(:average_rating, :range => @range, :exclude => blog_filter)
313
313
  end
314
314
  filter_tag = get_filter_tag('blog_id_i:1')
315
- connection.should have_last_search_with(
315
+ expect(connection).to have_last_search_with(
316
316
  :"facet.range" => %W({!ex=#{filter_tag}}average_rating_ft)
317
317
  )
318
318
  end
@@ -321,15 +321,15 @@ shared_examples_for "facetable query" do
321
321
  search do |query|
322
322
  query.facet :average_rating, :range => @range, :include => :edge
323
323
  end
324
- 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")
325
325
  end
326
326
 
327
327
  it 'does not allow date faceting on a non-continuous field' do
328
- lambda do
328
+ expect do
329
329
  search do |query|
330
330
  query.facet :title, :range => @range
331
331
  end
332
- end.should raise_error(ArgumentError)
332
+ end.to raise_error(ArgumentError)
333
333
  end
334
334
  end
335
335
 
@@ -342,7 +342,7 @@ shared_examples_for "facetable query" do
342
342
  end
343
343
  end
344
344
  end
345
- connection.should have_last_search_with(:facet => 'true')
345
+ expect(connection).to have_last_search_with(:facet => 'true')
346
346
  end
347
347
 
348
348
  it 'facets by query' do
@@ -353,7 +353,7 @@ shared_examples_for "facetable query" do
353
353
  end
354
354
  end
355
355
  end
356
- 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]')
357
357
  end
358
358
 
359
359
  it 'requests multiple query facets' do
@@ -367,7 +367,7 @@ shared_examples_for "facetable query" do
367
367
  end
368
368
  end
369
369
  end
370
- connection.should have_last_search_with(
370
+ expect(connection).to have_last_search_with(
371
371
  :"facet.query" => [
372
372
  'average_rating_ft:[3\.0 TO 4\.0]',
373
373
  'average_rating_ft:[4\.0 TO 5\.0]'
@@ -384,7 +384,7 @@ shared_examples_for "facetable query" do
384
384
  end
385
385
  end
386
386
  end
387
- connection.should have_last_search_with(
387
+ expect(connection).to have_last_search_with(
388
388
  :"facet.query" => '(category_ids_im:1 AND blog_id_i:2)'
389
389
  )
390
390
  end
@@ -400,7 +400,7 @@ shared_examples_for "facetable query" do
400
400
  end
401
401
  end
402
402
  end
403
- connection.should have_last_search_with(
403
+ expect(connection).to have_last_search_with(
404
404
  :"facet.query" => '(category_ids_im:1 OR blog_id_i:2)'
405
405
  )
406
406
  end
@@ -409,7 +409,7 @@ shared_examples_for "facetable query" do
409
409
  search do
410
410
  facet :category_ids, :only => [1, 3]
411
411
  end
412
- connection.should have_last_search_with(
412
+ expect(connection).to have_last_search_with(
413
413
  :"facet.query" => ['category_ids_im:1', 'category_ids_im:3']
414
414
  )
415
415
  end
@@ -418,7 +418,7 @@ shared_examples_for "facetable query" do
418
418
  search do
419
419
  facet :published_at, :only => [Time.utc(2009, 8, 28, 15, 33), Time.utc(2008,8, 28, 15, 33)]
420
420
  end
421
- connection.should have_last_search_with(
421
+ expect(connection).to have_last_search_with(
422
422
  :"facet.query" => [
423
423
  'published_at_dt:2009\-08\-28T15\:33\:00Z',
424
424
  'published_at_dt:2008\-08\-28T15\:33\:00Z'
@@ -430,7 +430,7 @@ shared_examples_for "facetable query" do
430
430
  search do
431
431
  facet(:foo) {}
432
432
  end
433
- connection.should_not have_last_search_with(:"facet.query")
433
+ expect(connection).not_to have_last_search_with(:"facet.query")
434
434
  end
435
435
 
436
436
  it 'ignores facet query row with no restrictions' do
@@ -442,7 +442,7 @@ shared_examples_for "facetable query" do
442
442
  row(:baz) {}
443
443
  end
444
444
  end
445
- connection.searches.last[:"facet.query"].should be_a(String)
445
+ expect(connection.searches.last[:"facet.query"]).to be_a(String)
446
446
  end
447
447
 
448
448
  it 'tags and excludes a scope filter in a query facet' do
@@ -455,7 +455,7 @@ shared_examples_for "facetable query" do
455
455
  end
456
456
  end
457
457
  filter_tag = get_filter_tag('blog_id_i:1')
458
- connection.should have_last_search_with(
458
+ expect(connection).to have_last_search_with(
459
459
  :"facet.query" => "{!ex=#{filter_tag}}category_ids_im:1"
460
460
  )
461
461
  end
@@ -473,7 +473,7 @@ shared_examples_for "facetable query" do
473
473
  end
474
474
  end
475
475
  filter_tag = get_filter_tag('(blog_id_i:1 OR blog_id_i:2)')
476
- connection.should have_last_search_with(
476
+ expect(connection).to have_last_search_with(
477
477
  :"facet.query" => "{!ex=#{filter_tag}}category_ids_im:1"
478
478
  )
479
479
  end
@@ -491,7 +491,7 @@ shared_examples_for "facetable query" do
491
491
  filter_tags = %w(blog_id_i:1 category_ids_im:2).map do |phrase|
492
492
  get_filter_tag(phrase)
493
493
  end.join(',')
494
- connection.should have_last_search_with(
494
+ expect(connection).to have_last_search_with(
495
495
  :"facet.query" => "{!ex=#{filter_tags}}category_ids_im:1"
496
496
  )
497
497
  end
@@ -503,25 +503,25 @@ shared_examples_for "facetable query" do
503
503
  row(:bar) {}
504
504
  end
505
505
  end
506
- connection.should_not have_last_search_with(:"facet.query")
506
+ expect(connection).not_to have_last_search_with(:"facet.query")
507
507
  end
508
508
 
509
509
  it 'does not allow 0 arguments to facet method with block' do
510
- lambda do
510
+ expect do
511
511
  search do
512
512
  facet do
513
513
  end
514
514
  end
515
- end.should raise_error(ArgumentError)
515
+ end.to raise_error(ArgumentError)
516
516
  end
517
517
 
518
518
  it 'does not allow more than 1 argument to facet method with block' do
519
- lambda do
519
+ expect do
520
520
  search do
521
521
  facet :foo, :bar do
522
522
  end
523
523
  end
524
- end.should raise_error(ArgumentError)
524
+ end.to raise_error(ArgumentError)
525
525
  end
526
526
  end
527
527
  end