scoped_search 2.7.1 → 3.0.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.
@@ -131,7 +131,7 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
131
131
 
132
132
  context 'value auto complete' do
133
133
  it "should complete values list of values " do
134
- Foo.complete_for('explicit = ').should have(1).item
134
+ Foo.complete_for('explicit = ').length.should == 1
135
135
  end
136
136
 
137
137
  it "should complete values should contain baz" do
@@ -179,7 +179,7 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
179
179
  context 'exceptional search strings' do
180
180
 
181
181
  it "query that starts with 'or'" do
182
- Foo.complete_for('or ').should have(9).items
182
+ Foo.complete_for('or ').length.should == 9
183
183
  end
184
184
 
185
185
  it "value completion with quotes" do
@@ -201,15 +201,15 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
201
201
  # the string.
202
202
  context 'dotted options in the completion list' do
203
203
  it "query that starts with space should not include the dotted options" do
204
- Foo.complete_for(' ').should have(9).items
204
+ Foo.complete_for(' ').length.should == 9
205
205
  end
206
206
 
207
207
  it "query that starts with the dotted string should include the dotted options" do
208
- Foo.complete_for('bars.').should have(4).items
208
+ Foo.complete_for('bars.').length.should == 4
209
209
  end
210
210
 
211
211
  it "query that starts with part of the dotted string should include the dotted options" do
212
- Foo.complete_for('b').should have(4).items
212
+ Foo.complete_for('b').length.should == 4
213
213
  end
214
214
 
215
215
  end
@@ -31,7 +31,7 @@ require "spec_helper"
31
31
  class ::Item < ActiveRecord::Base
32
32
  has_many :facts
33
33
  has_many :keys, :through => :facts
34
-
34
+
35
35
  scoped_search :in => :facts, :on => :value, :rename => :facts, :in_key => :keys, :on_key => :name, :complete_value => true
36
36
  end
37
37
  class ::MyItem < ::Item
@@ -60,7 +60,7 @@ require "spec_helper"
60
60
  end
61
61
 
62
62
  it "should find all bars with a fact name color and fact value green" do
63
- Item.search_for('facts.color = green').should have(1).items
63
+ Item.search_for('facts.color = green').length.should == 1
64
64
  end
65
65
 
66
66
  it "should find all bars with a fact name color and fact value gold" do
@@ -68,31 +68,31 @@ require "spec_helper"
68
68
  end
69
69
 
70
70
  it "should find all bars with a fact name size and fact value 5" do
71
- Item.search_for('facts.size = 5').should have(1).items
71
+ Item.search_for('facts.size = 5').length.should == 1
72
72
  end
73
73
 
74
74
  it "should find all bars with a fact color green and fact size 5" do
75
- Item.search_for('facts.color = green and facts.size = 5').should have(1).items
75
+ Item.search_for('facts.color = green and facts.size = 5').length.should == 1
76
76
  end
77
77
 
78
78
  it "should find all bars with a fact color gold or green" do
79
- Item.search_for('facts.color = gold or facts.color = green').should have(2).items
79
+ Item.search_for('facts.color = gold or facts.color = green').length.should == 2
80
80
  end
81
81
 
82
82
  it "should find all bars that has size value" do
83
- Item.search_for('has facts.size').should have(1).items
83
+ Item.search_for('has facts.size').length.should == 1
84
84
  end
85
85
 
86
86
  it "should find all bars that has color value" do
87
- Item.search_for('has facts.color').should have(2).items
87
+ Item.search_for('has facts.color').length.should == 2
88
88
  end
89
89
 
90
90
  it "should complete facts names" do
91
- Item.complete_for('facts.').should have(2).items
91
+ Item.complete_for('facts.').length.should == 2
92
92
  end
93
93
 
94
94
  it "should complete values for fact name = color" do
95
- Item.complete_for('facts.color = ').should have(2).items
95
+ Item.complete_for('facts.color = ').length.should == 2
96
96
  end
97
97
 
98
98
  it "should find all bars with a fact name color and fact value gold of descendant class" do
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  # These specs will run on all databases that are defined in the spec/database.yml file.
4
4
  # Comment out any databases that you do not have available for testing purposes if needed.
5
5
  ScopedSearch::RSpec::Database.test_databases.each do |db|
6
-
6
+
7
7
  describe ScopedSearch, "using a #{db} database" do
8
8
 
9
9
  before(:all) do
@@ -31,39 +31,39 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
31
31
  end
32
32
 
33
33
  it "should find the record with an exact integer match" do
34
- @class.search_for('9').should have(1).item
34
+ @class.search_for('9').length.should == 1
35
35
  end
36
36
 
37
37
  it "should find the record with an exact decimal match" do
38
- @class.search_for('1.23').should have(1).item
38
+ @class.search_for('1.23').length.should == 1
39
39
  end
40
40
 
41
41
  it "should find the record with an exact integer match with an explicit operator" do
42
- @class.search_for('= 9').should have(1).item
42
+ @class.search_for('= 9').length.should == 1
43
43
  end
44
44
 
45
45
  it "should find the record with an exact integer match with an explicit field name" do
46
- @class.search_for('int = 9').should have(1).item
46
+ @class.search_for('int = 9').length.should == 1
47
47
  end
48
48
 
49
49
  it "should find the record with an exact integer match with an explicit field name" do
50
- @class.search_for('int > 8').should have(1).item
50
+ @class.search_for('int > 8').length.should == 1
51
51
  end
52
52
 
53
53
  it "should find the record with a grater than operator and explicit field" do
54
- @class.search_for('int > 9').should have(0).item
54
+ @class.search_for('int > 9').length.should == 0
55
55
  end
56
56
 
57
57
  it "should find the record with an >= operator with an implicit field name" do
58
- @class.search_for('>= 9').should have(1).item
58
+ @class.search_for('>= 9').length.should == 1
59
59
  end
60
60
 
61
61
  it "should not return the record if only one predicate is true and AND is used (by default)" do
62
- @class.search_for('int <= 8, int > 8').should have(0).item
62
+ @class.search_for('int <= 8, int > 8').length.should == 0
63
63
  end
64
64
 
65
65
  it "should return the record in only one predicate is true and OR is used as operator" do
66
- @class.search_for('int <= 8 || int > 8').should have(1).item
66
+ @class.search_for('int <= 8 || int > 8').length.should == 1
67
67
  end
68
68
  end
69
69
 
@@ -81,18 +81,16 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
81
81
  lambda { @class.search_for('unindexed = 10') }.should raise_error(ScopedSearch::Exception)
82
82
  end
83
83
 
84
- # Before Ruby 2.0 if a string had forced encoding and a nil was extracted from it during
84
+ # Before Ruby 2.0 if a string had forced encoding and a nil was extracted from it during
85
85
  # any implicit type conversions to a string (+ or << operators) a TypeError would be raised.
86
86
  # https://github.com/wvanbergen/scoped_search/issues/33 for more details
87
87
  it "encoded string should not raise TypeError when querying non-indexed column without a value" do
88
- if defined? Encoding
89
- query = 'unindexed ='.force_encoding(Encoding::UTF_8).encode
90
- lambda { @class.search_for(query) }.should_not raise_error
91
- end
88
+ query = 'unindexed ='.force_encoding(Encoding::UTF_8).encode
89
+ lambda { @class.search_for(query) }.should_not raise_error
92
90
  end
93
91
 
94
92
  it "should not return records for which the query matches unindex records" do
95
- @class.search_for('= 10').should have(0).item
93
+ @class.search_for('= 10').length.should == 0
96
94
  end
97
95
  end
98
96
 
@@ -109,65 +107,65 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
109
107
  end
110
108
 
111
109
  it "should accept YYYY-MM-DD as date format" do
112
- @class.search_for('date = 2009-01-02').should have(1).item
110
+ @class.search_for('date = 2009-01-02').length.should == 1
113
111
  end
114
112
 
115
113
  it "should accept YY-MM-DD as date format" do
116
- @class.search_for('date = 09-01-02').should have(1).item
114
+ @class.search_for('date = 09-01-02').length.should == 1
117
115
  end
118
116
 
119
117
  if RUBY_VERSION.to_f == 1.8
120
118
  it "should accept MM/DD/YY as date format" do
121
- @class.search_for('date = 01/02/09').should have(1).item
119
+ @class.search_for('date = 01/02/09').length.should == 1
122
120
  end
123
121
 
124
122
  it "should accept MM/DD/YYYY as date format" do
125
- @class.search_for('date = 01/02/2009').should have(1).item
123
+ @class.search_for('date = 01/02/2009').length.should == 1
126
124
  end
127
- end
128
-
125
+ end
126
+
129
127
  it "should accept YYYY/MM/DD as date format" do
130
- @class.search_for('date = 2009/01/02').should have(1).item
131
- end
128
+ @class.search_for('date = 2009/01/02').length.should == 1
129
+ end
132
130
 
133
131
  it "should ignore an invalid date and thus return all records" do
134
- @class.search_for('>= 2009-14-57').should have(2).items
132
+ @class.search_for('>= 2009-14-57').count.should == 2
135
133
  end
136
134
 
137
135
  it "should find the records with a timestamp set some point on the provided date" do
138
- @class.search_for('>= 2009-01-02').should have(1).item
136
+ @class.search_for('>= 2009-01-02').length.should == 1
139
137
  end
140
138
 
141
139
  it "should support full timestamps" do
142
- @class.search_for('> "2009-01-02 02:02:02"').should have(1).item
140
+ @class.search_for('> "2009-01-02 02:02:02"').length.should == 1
143
141
  end
144
142
 
145
143
  it "should find no record with a timestamp in the past" do
146
- @class.search_for('< 2009-01-02').should have(0).item
144
+ @class.search_for('< 2009-01-02').length.should == 0
147
145
  end
148
146
 
149
147
  it "should find all timestamps on a date if no time is given using the = operator" do
150
- @class.search_for('= 2009-01-02').should have(1).item
148
+ @class.search_for('= 2009-01-02').length.should == 1
151
149
  end
152
150
 
153
151
  it "should find all timestamps on a date if no time is when no operator is given" do
154
- @class.search_for('2009-01-02').should have(1).item
152
+ @class.search_for('2009-01-02').length.should == 1
155
153
  end
156
154
 
157
155
  it "should find all timestamps not on a date if no time is given using the != operator" do
158
- @class.search_for('!= 2009-01-02').should have(0).item
156
+ @class.search_for('!= 2009-01-02').length.should == 0
159
157
  end
160
158
 
161
159
  it "should find the records when the date part of a timestamp matches a date" do
162
- @class.search_for('>= 2009-01-02').should have(1).item
160
+ @class.search_for('>= 2009-01-02').length.should == 1
163
161
  end
164
162
 
165
163
  it "should find the record with the timestamp today or in the past" do
166
- @class.search_for('<= 2009-01-02').should have(1).item
164
+ @class.search_for('<= 2009-01-02').length.should == 1
167
165
  end
168
166
 
169
167
  it "should find no record with a timestamp later than today" do
170
- @class.search_for('> 2009-01-02').should have(0).item
168
+ @class.search_for('> 2009-01-02').length.should == 0
171
169
  end
172
170
 
173
171
  end
@@ -191,35 +189,35 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
191
189
  end
192
190
 
193
191
  it "should accept Today as date format" do
194
- @class.search_for('date = Today').should have(2).item
192
+ @class.search_for('date = Today').length.should == 2
195
193
  end
196
194
 
197
195
  it "should accept Yesterday as date format" do
198
- @class.search_for('date = yesterday').should have(1).item
196
+ @class.search_for('date = yesterday').length.should == 1
199
197
  end
200
198
 
201
199
  it "should find all timestamps and date from today using the = operator" do
202
- @class.search_for('= Today').should have(2).item
200
+ @class.search_for('= Today').length.should == 2
203
201
  end
204
202
 
205
203
  it "should find all timestamps and date from today no operator" do
206
- @class.search_for('Today').should have(2).item
204
+ @class.search_for('Today').length.should == 2
207
205
  end
208
206
 
209
207
  it "should accept 2 days ago as date format" do
210
- @class.search_for('date < "2 days ago"').should have(2).item
208
+ @class.search_for('date < "2 days ago"').length.should == 2
211
209
  end
212
210
 
213
211
  it "should accept 3 hours ago as date format" do
214
- @class.search_for('timestamp > "3 hours ago"').should have(2).item
212
+ @class.search_for('timestamp > "3 hours ago"').length.should == 2
215
213
  end
216
214
 
217
215
  it "should accept 1 month ago as date format" do
218
- @class.search_for('date > "1 month ago"').should have(3).item
216
+ @class.search_for('date > "1 month ago"').length.should == 3
219
217
  end
220
218
 
221
219
  it "should accept 1 year ago as date format" do
222
- @class.search_for('date > "1 year ago"').should have(4).item
220
+ @class.search_for('date > "1 year ago"').length.should == 4
223
221
  end
224
222
 
225
223
  end
@@ -240,27 +238,27 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
240
238
  end
241
239
 
242
240
  it "should not find any record because first equal = 2" do
243
- @foo.search_for('first = 4').should have(0).item
241
+ @foo.search_for('first = 4').length.should == 0
244
242
  end
245
243
 
246
244
  it "should find the record" do
247
- @foo.search_for('first = 2').should have(1).item
245
+ @foo.search_for('first = 2').length.should == 1
248
246
  end
249
247
 
250
248
  it "should not find any record with a grater than operator" do
251
- @foo.search_for('first > 9').should have(0).item
249
+ @foo.search_for('first > 9').length.should == 0
252
250
  end
253
251
 
254
252
  it "should find the record with an >= operator" do
255
- @foo.search_for('sec >= 4').should have(1).item
253
+ @foo.search_for('sec >= 4').length.should == 1
256
254
  end
257
255
 
258
256
  it "should find the record with AND operator is used" do
259
- @foo.search_for('sec <= 8 and first = 2').should have(1).item
257
+ @foo.search_for('sec <= 8 and first = 2').length.should == 1
260
258
  end
261
259
 
262
260
  it "should return the record in if one predicate is true and OR is used as operator" do
263
- @foo.search_for('sec <= 8 || first > 8').should have(1).item
261
+ @foo.search_for('sec <= 8 || first > 8').length.should == 1
264
262
  end
265
263
  end
266
264
  end
@@ -30,14 +30,14 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
30
30
  end
31
31
 
32
32
  it "should find records when searching the subclass" do
33
- Sub.search_for('test').should have(1).item
33
+ Sub.search_for('test').length.should == 1
34
34
  end
35
35
  end
36
36
 
37
37
  context 'querying a :belongs_to relation' do
38
38
 
39
39
  before do
40
-
40
+
41
41
  # The related class
42
42
  ActiveRecord::Migration.create_table(:hars) { |t| t.string :related }
43
43
  class Har < ActiveRecord::Base; has_many :loos; end
@@ -63,15 +63,15 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
63
63
  end
64
64
 
65
65
  it "should find all records with a related bar record containing bar" do
66
- Loo.search_for('bar').should have(3).items
66
+ Loo.search_for('bar').length.should == 3
67
67
  end
68
68
 
69
69
  it "should find all records with a related bar record having an exact value of bar with an explicit field" do
70
- Loo.search_for('related = bar').should have(2).items
70
+ Loo.search_for('related = bar').length.should == 2
71
71
  end
72
72
 
73
73
  it "should find records for which the bar relation is not set using null?" do
74
- Loo.search_for('null? related').should have(1).items
74
+ Loo.search_for('null? related').length.should == 1
75
75
  end
76
76
 
77
77
  it "should find records for which the bar relation is not set using null?" do
@@ -111,35 +111,35 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
111
111
  end
112
112
 
113
113
  it "should find all records with at least one bar record containing 'bar'" do
114
- ::Goo.search_for('bar').should have(2).items
114
+ ::Goo.search_for('bar').length.should == 2
115
115
  end
116
116
 
117
117
  it "should find the only record with at least one bar record having the exact value 'bar'" do
118
- ::Goo.search_for('= bar').should have(1).item
118
+ ::Goo.search_for('= bar').length.should == 1
119
119
  end
120
120
 
121
121
  it "should find all records for which at least one related bar record exists" do
122
- ::Goo.search_for('set? related').should have(2).items
122
+ ::Goo.search_for('set? related').length.should == 2
123
123
  end
124
124
 
125
125
  it "should find all records for which none related bar records exist" do
126
- ::Goo.search_for('null? related').should have(1).items
126
+ ::Goo.search_for('null? related').length.should == 1
127
127
  end
128
-
128
+
129
129
  it "should find all records which has relation with both related values" do
130
- ::Goo.search_for('related=bar AND related="another bar"').should have(1).items
130
+ ::Goo.search_for('related=bar AND related="another bar"').length.should == 1
131
131
  end
132
132
 
133
133
  it "should find all records searching with both parent and child fields" do
134
- ::Goo.search_for('foo bar').should have(2).items
134
+ ::Goo.search_for('foo bar').length.should == 2
135
135
  end
136
136
 
137
137
  it "should find the only record with two Jars" do
138
- ::Goo.search_for('foo bar "another bar"').should have(1).item
138
+ ::Goo.search_for('foo bar "another bar"').length.should == 1
139
139
  end
140
140
 
141
141
  it "shouldn't find any records as there isn't an intersect" do
142
- ::Goo.search_for('too another').should have(0).items
142
+ ::Goo.search_for('too another').length.should == 0
143
143
  end
144
144
 
145
145
  end
@@ -175,19 +175,19 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
175
175
  end
176
176
 
177
177
  it "should find all records with a car record containing 'bar" do
178
- Hoo.search_for('bar').should have(2).items
178
+ Hoo.search_for('bar').length.should == 2
179
179
  end
180
180
 
181
181
  it "should find the only record with the bar record has the exact value 'bar" do
182
- Hoo.search_for('= bar').should have(1).item
182
+ Hoo.search_for('= bar').length.should == 1
183
183
  end
184
184
 
185
185
  it "should find all records for which the related bar record exists" do
186
- Hoo.search_for('set? related').should have(2).items
186
+ Hoo.search_for('set? related').length.should == 2
187
187
  end
188
188
 
189
189
  it "should find all records for which the related bar record does not exist" do
190
- Hoo.search_for('null? related').should have(1).items
190
+ Hoo.search_for('null? related').length.should == 1
191
191
  end
192
192
  end
193
193
 
@@ -228,19 +228,19 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
228
228
  end
229
229
 
230
230
  it "should find all records with at least one associated bar record containing 'bar'" do
231
- Joo.search_for('bar').should have(2).items
231
+ Joo.search_for('bar').length.should == 2
232
232
  end
233
233
 
234
234
  it "should find record which is related to @bar_1" do
235
- Joo.search_for('= bar').should have(1).items
235
+ Joo.search_for('= bar').length.should == 1
236
236
  end
237
237
 
238
238
  it "should find the only record related to @bar_3" do
239
- Joo.search_for('last').should have(1).items
239
+ Joo.search_for('last').length.should == 1
240
240
  end
241
241
 
242
242
  it "should find all records that are related to @bar_2" do
243
- Joo.search_for('other').should have(2).items
243
+ Joo.search_for('other').length.should == 2
244
244
  end
245
245
  end
246
246
 
@@ -290,11 +290,11 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
290
290
  end
291
291
 
292
292
  it "should find the two records that are related to a baz record" do
293
- Koo.search_for('baz').should have(2).items
293
+ Koo.search_for('baz').length.should == 2
294
294
  end
295
295
 
296
296
  it "should find the two records that are related to a baz record" do
297
- Koo.search_for('related=baz AND related="baz too!"').should have(1).items
297
+ Koo.search_for('related=baz AND related="baz too!"').length.should == 1
298
298
  end
299
299
  end
300
300
 
@@ -339,11 +339,11 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
339
339
  # This table schema is not supported in activerecord 2, skip the tests
340
340
  if ActiveRecord::VERSION::MAJOR > 2
341
341
  it "should find the three records that are related to a baz record" do
342
- Zoo.search_for('baz').should have(3).items
342
+ Zoo.search_for('baz').length.should == 3
343
343
  end
344
344
 
345
345
  it "should find no records that are related to a baz record" do
346
- Zoo.search_for('related=baz AND related="baz too!"').should have(0).items
346
+ Zoo.search_for('related=baz AND related="baz too!"').length.should == 0
347
347
  end
348
348
  end
349
349
  end
@@ -406,19 +406,19 @@ ScopedSearch::RSpec::Database.test_databases.each do |db|
406
406
  end
407
407
 
408
408
  it "should find the two records that are related to a tag that contains foo record" do
409
- Dog.search_for('foo').should have(2).items
409
+ Dog.search_for('foo').length.should == 2
410
410
  end
411
411
 
412
412
  it "should find one records that is related to both tags" do
413
- Dog.search_for('foo=foo AND foo="foo too"').should have(1).items
413
+ Dog.search_for('foo=foo AND foo="foo too"').length.should == 1
414
414
  end
415
415
 
416
416
  it "should find the two tags that are related to a dog record" do
417
- Tag.search_for('dog=baz').should have(2).items
417
+ Tag.search_for('dog=baz').length.should == 2
418
418
  end
419
419
 
420
420
  it "should find the 3 tags that are related to dogs record" do
421
- Tag.search_for('baz').should have(3).items
421
+ Tag.search_for('baz').length.should == 3
422
422
  end
423
423
 
424
424
  end