scoped_search 2.7.1 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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