search_object 1.0 → 1.1.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.
@@ -3,18 +3,24 @@ require 'active_support/core_ext/object/blank'
3
3
 
4
4
  module SearchObject
5
5
  describe Base do
6
- def search_class(default_scope = [], &block)
6
+ def define_search_class(&block)
7
7
  Class.new do
8
8
  include SearchObject.module
9
9
 
10
+ class_eval(&block)
11
+ end
12
+ end
13
+
14
+ def search_class(default_scope = [], &block)
15
+ define_search_class do
10
16
  scope { default_scope }
11
17
 
12
18
  if block.nil?
13
19
  option :value do |scope, value|
14
- scope.find_all { |v| v == value }
20
+ scope.select { |v| v == value }
15
21
  end
16
22
  else
17
- class_eval &block
23
+ class_eval(&block)
18
24
  end
19
25
  end
20
26
  end
@@ -23,22 +29,22 @@ module SearchObject
23
29
  search_class(default_scope, &block).new filters: filters
24
30
  end
25
31
 
26
- it "can had its #initialize method overwritten" do
32
+ it 'can had its #initialize method overwritten' do
27
33
  search = new_search do
34
+ attr_reader :initialized
35
+
36
+ alias_method :initialized?, :initialized
37
+
28
38
  def initialize(filters = {})
29
39
  @initialized = true
30
40
  super filters
31
41
  end
32
-
33
- def initialized?
34
- @initialized
35
- end
36
42
  end
37
43
 
38
44
  expect(search).to be_initialized
39
45
  end
40
46
 
41
- it "can have multiple subclasses" do
47
+ it 'can have multiple subclasses' do
42
48
  search1 = new_search [1, 2, 3], filter: 1 do
43
49
  option :filter do |scope, value|
44
50
  scope.select { |v| v == value }
@@ -54,27 +60,43 @@ module SearchObject
54
60
  expect(search1.results).not_to eq search2.results
55
61
  end
56
62
 
57
- context "no scope" do
58
- def search_class
59
- Class.new do
60
- include SearchObject.module
63
+ it 'can be inherited' do
64
+ child_class = Class.new(search_class([1, 2, 3])) do
65
+ option :value do |scope, value|
66
+ scope.select { |v| v == value }
67
+ end
68
+ end
69
+
70
+ expect(child_class.new(filters: { value: 1 }).results).to eq [1]
71
+ end
61
72
 
73
+ context 'scope' do
74
+ def search_class
75
+ define_search_class do
62
76
  option :name do
63
77
  end
64
78
  end
65
79
  end
66
80
 
67
- it "accepts scope as argument" do
81
+ it 'accepts scope as argument' do
68
82
  expect(search_class.new(scope: 'scope').results).to eq 'scope'
69
83
  end
70
84
 
71
- it "raises an error if scope is not provided" do
72
- expect { search_class.new }.to raise_error SearchObject::MissingScopeError
85
+ it 'raises an error if scope is not provided' do
86
+ expect { search_class.new }.to raise_error MissingScopeError
87
+ end
88
+
89
+ it 'can overwrite the search scope' do
90
+ search_class = define_search_class do
91
+ scope { 'scope' }
92
+ end
93
+
94
+ expect(search_class.new(scope: 'other scope').results).to eq 'other scope'
73
95
  end
74
96
  end
75
97
 
76
- describe "option" do
77
- it "has default filter" do
98
+ describe 'option' do
99
+ it 'has default filter' do
78
100
  scope = [1, 2, 3]
79
101
  expect(scope).to receive(:where).with('value' => 1) { 'results' }
80
102
 
@@ -85,7 +107,7 @@ module SearchObject
85
107
  expect(search.results).to eq 'results'
86
108
  end
87
109
 
88
- it "returns the scope if nil returned" do
110
+ it 'returns the scope if nil returned' do
89
111
  scope = [1, 2, 3]
90
112
  search = new_search scope, value: 'some' do
91
113
  option :value do
@@ -96,7 +118,7 @@ module SearchObject
96
118
  expect(search.results).to eq scope
97
119
  end
98
120
 
99
- it "can use methods from the object" do
121
+ it 'can use methods from the object' do
100
122
  search1 = new_search [1, 2, 3], filter: 1 do
101
123
  option :filter do |scope, value|
102
124
  some_instance_method(scope, value)
@@ -111,64 +133,78 @@ module SearchObject
111
133
 
112
134
  expect(search1.results).to eq [1]
113
135
  end
136
+
137
+ it 'can dispatch with instance methods' do
138
+ search = new_search [1, 2, 3], filter: 1 do
139
+ option :filter, with: :some_instance_method
140
+
141
+ private
142
+
143
+ def some_instance_method(scope, value)
144
+ scope.select { |v| v == value }
145
+ end
146
+ end
147
+
148
+ expect(search.results).to eq [1]
149
+ end
114
150
  end
115
151
 
116
- describe "option attributes" do
117
- it "access option values" do
152
+ describe 'option attributes' do
153
+ it 'access option values' do
118
154
  search = new_search [], value: 1
119
155
  expect(search.value).to eq 1
120
156
  end
121
157
 
122
- it "returns default option value if option is not specified" do
158
+ it 'returns default option value if option is not specified' do
123
159
  search = new_search do
124
160
  option :value, 1
125
161
  end
126
162
  expect(search.value).to eq 1
127
163
  end
128
164
 
129
- it "does not include invalid options" do
165
+ it 'does not include invalid options' do
130
166
  search = new_search [], invalid: 'option'
131
167
  expect { search.invalid }.to raise_error NoMethodError
132
168
  end
133
169
  end
134
170
 
135
- describe ".results" do
136
- it "shortcut for creating new search and immediately returning results" do
137
- klass = search_class [1 ,2 ,3]
138
- expect(klass.results(filters: {value: 1})).to eq [1]
171
+ describe '.results' do
172
+ it 'shortcut for creating new search and immediately returning results' do
173
+ klass = search_class [1, 2, 3]
174
+ expect(klass.results(filters: { value: 1 })).to eq [1]
139
175
  end
140
176
  end
141
177
 
142
- describe "#results" do
143
- it "returns only the filtered search results" do
144
- search = new_search [1 ,2 ,3], value: 1
178
+ describe '#results' do
179
+ it 'returns only the filtered search results' do
180
+ search = new_search [1, 2, 3], value: 1
145
181
  expect(search.results).to eq [1]
146
182
  end
147
183
 
148
- it "can apply several options" do
149
- scope = [1, 2, 3, 4, 5, 6, 7]
150
- search = new_search scope, bigger_than: 3, odd: true do
184
+ it 'can apply several options' do
185
+ values = [1, 2, 3, 4, 5, 6, 7]
186
+ search = new_search values, bigger_than: 3, odd: true do
151
187
  option :bigger_than do |scope, value|
152
- scope.find_all { |v| v > value }
188
+ scope.select { |v| v > value }
153
189
  end
154
190
 
155
191
  option :odd do |scope, value|
156
- scope.find_all(&:odd?) if value
192
+ scope.select(&:odd?) if value
157
193
  end
158
194
  end
159
195
 
160
196
  expect(search.results).to eq [5, 7]
161
197
  end
162
198
 
163
- it "ignores invalid filters" do
199
+ it 'ignores invalid filters' do
164
200
  search = new_search [1, 2, 3], invalid: 'option'
165
201
  expect(search.results).to eq [1, 2, 3]
166
202
  end
167
203
 
168
- it "can be overwritten by overwriting #fetch_results" do
204
+ it 'can be overwritten by overwriting #fetch_results' do
169
205
  search = new_search [1, 2, 3], value: 1 do
170
206
  option :value do |scope, value|
171
- scope.find_all { |v| v == value }
207
+ scope.select { |v| v == value }
172
208
  end
173
209
 
174
210
  def fetch_results
@@ -179,8 +215,8 @@ module SearchObject
179
215
  expect(search.results).to eq ['~1~']
180
216
  end
181
217
 
182
- it "applies to default options" do
183
- search = new_search [1,2,3] do
218
+ it 'applies to default options' do
219
+ search = new_search [1, 2, 3] do
184
220
  option :value, 1 do |scope, value|
185
221
  scope.select { |v| v == value }
186
222
  end
@@ -189,23 +225,23 @@ module SearchObject
189
225
  end
190
226
  end
191
227
 
192
- describe "#results?" do
193
- it "returns true if there are results" do
194
- expect(new_search([1,2,3], value: 1).results?).to be_true
228
+ describe '#results?' do
229
+ it 'returns true if there are results' do
230
+ expect(new_search([1, 2, 3], value: 1).results?).to be_truthy
195
231
  end
196
232
 
197
- it "returns false if there aren't any results" do
198
- expect(new_search([1,2,3], value: 4).results?).to be_false
233
+ it 'returns false if there are no results' do
234
+ expect(new_search([1, 2, 3], value: 4).results?).to be_falsey
199
235
  end
200
236
  end
201
237
 
202
- describe "#count" do
203
- it "counts the number of results" do
204
- expect(new_search([1,2,3], value: 1).count).to eq 1
238
+ describe '#count' do
239
+ it 'counts the number of results' do
240
+ expect(new_search([1, 2, 3], value: 1).count).to eq 1
205
241
  end
206
242
 
207
- it "can't be bypassed by plug ins" do
208
- search = new_search [1,2,3] do
243
+ it 'can not be bypassed by plugins' do
244
+ search = new_search [1, 2, 3] do
209
245
  def fetch_results
210
246
  []
211
247
  end
@@ -215,28 +251,28 @@ module SearchObject
215
251
  end
216
252
  end
217
253
 
218
- describe "#params" do
219
- it "exports options as params" do
254
+ describe '#params' do
255
+ it 'exports options as params' do
220
256
  search = new_search [], value: 1
221
257
  expect(search.params).to eq 'value' => 1
222
258
  end
223
259
 
224
- it "can overwrite options (mainly used for url handers)" do
260
+ it 'can overwrite options (mainly used for url handers)' do
225
261
  search = new_search [], value: 1
226
262
  expect(search.params(value: 2)).to eq 'value' => 2
227
263
  end
228
264
 
229
- it "ignores missing options" do
265
+ it 'ignores missing options' do
230
266
  search = new_search
231
267
  expect(search.params).to eq({})
232
268
  end
233
269
 
234
- it "ignores invalid options" do
270
+ it 'ignores invalid options' do
235
271
  search = new_search [], invalid: 'option'
236
272
  expect(search.params).to eq({})
237
273
  end
238
274
 
239
- it "includes default options" do
275
+ it 'includes default options' do
240
276
  search = new_search do
241
277
  option :value, 1
242
278
  end
@@ -2,26 +2,26 @@ require 'spec_helper'
2
2
 
3
3
  module SearchObject
4
4
  describe Helper do
5
- describe ".stringify_keys" do
6
- it "converts hash keys to strings" do
5
+ describe '.stringify_keys' do
6
+ it 'converts hash keys to strings' do
7
7
  hash = Helper.stringify_keys a: 1, b: nil, c: false
8
8
  expect(hash).to eq 'a' => 1, 'b' => nil, 'c' => false
9
9
  end
10
10
  end
11
11
 
12
- describe ".select_keys" do
13
- it "selects only given keys" do
14
- hash = Helper.select_keys({a: 1, b: 2, c:3}, [:a, :b])
12
+ describe '.select_keys' do
13
+ it 'selects only given keys' do
14
+ hash = Helper.select_keys({ a: 1, b: 2, c: 3 }, [:a, :b])
15
15
  expect(hash).to eq a: 1, b: 2
16
16
  end
17
17
 
18
- it "ignores not existing keys" do
18
+ it 'ignores not existing keys' do
19
19
  hash = Helper.select_keys({}, [:a, :b])
20
20
  expect(hash).to eq({})
21
21
  end
22
22
  end
23
23
 
24
- describe "camelize" do
24
+ describe 'camelize' do
25
25
  it "transforms :paging to 'Paging'" do
26
26
  expect(Helper.camelize(:paging)).to eq 'Paging'
27
27
  end
@@ -5,10 +5,10 @@ require_relative '../../support/kaminari_setup'
5
5
  module SearchObject
6
6
  module Plugin
7
7
  describe Kaminari do
8
- it_behaves_like "a paging plugin" do
9
- it "uses kaminari gem" do
8
+ it_behaves_like 'a paging plugin' do
9
+ it 'uses kaminari gem' do
10
10
  search = search_with_page
11
- expect(search.results.respond_to? :total_pages).to be_true
11
+ expect(search.results.respond_to? :total_pages).to be_truthy
12
12
  end
13
13
  end
14
14
  end
@@ -30,14 +30,18 @@ module SearchObject
30
30
  end
31
31
 
32
32
  def assert(condition, message = nil)
33
- expect(condition).to be_true, message
33
+ expect(condition).to be_truthy, message
34
34
  end
35
35
 
36
36
  def assert_kind_of(expected_kind, object, message = nil)
37
37
  expect(object).to be_kind_of(expected_kind), message
38
38
  end
39
39
 
40
- ActiveModel::Lint::Tests.public_instance_methods.map { |method| method.to_s }.grep(/^test/).each do |method|
40
+ def assert_equal(expected_value, value, message = nil)
41
+ expect(value).to eq(expected_value), message
42
+ end
43
+
44
+ ActiveModel::Lint::Tests.public_instance_methods.map(&:to_s).grep(/^test/).each do |method|
41
45
  example(method.gsub('_', ' ')) { send method }
42
46
  end
43
47
  end
@@ -3,7 +3,7 @@ require 'spec_helper_active_record'
3
3
  module SearchObject
4
4
  module Plugin
5
5
  describe Paging do
6
- it_behaves_like "a paging plugin"
6
+ it_behaves_like 'a paging plugin'
7
7
  end
8
8
  end
9
9
  end
@@ -17,123 +17,128 @@ module SearchObject
17
17
  end
18
18
 
19
19
  def search_with_sort(sort = nil, filters = {})
20
- search_class.new filters: {sort: sort}.merge(filters)
20
+ search_class.new filters: { sort: sort }.merge(filters)
21
21
  end
22
22
 
23
- describe "sorting" do
23
+ it 'can be inherited' do
24
+ child_class = Class.new(search_class)
25
+ expect(child_class.new.sort_attribute).to eq 'name'
26
+ end
27
+
28
+ describe 'sorting' do
24
29
  after do
25
30
  Product.delete_all
26
31
  end
27
32
 
28
- it "sorts results based on the sort option" do
33
+ it 'sorts results based on the sort option' do
29
34
  5.times { |i| Product.create! price: i }
30
35
 
31
36
  search = search_with_sort 'price desc'
32
37
  expect(search.results.map(&:price)).to eq [4, 3, 2, 1, 0]
33
38
  end
34
39
 
35
- it "defaults to first sort by option" do
40
+ it 'defaults to first sort by option' do
36
41
  5.times { |i| Product.create! name: "Name#{i}" }
37
42
 
38
43
  search = search_with_sort
39
44
  expect(search.results.map(&:name)).to eq %w(Name4 Name3 Name2 Name1 Name0)
40
45
  end
41
46
 
42
- it "ignores invalid sort values" do
47
+ it 'ignores invalid sort values' do
43
48
  search = search_with_sort 'invalid attribute'
44
49
  expect { search.results.to_a }.not_to raise_error
45
50
  end
46
51
  end
47
52
 
48
- describe "#sort?" do
49
- it "matches the sort option" do
53
+ describe '#sort?' do
54
+ it 'matches the sort option' do
50
55
  search = search_with_sort 'price desc'
51
56
 
52
- expect(search.sort?(:price)).to be_true
53
- expect(search.sort?(:name)).to be_false
57
+ expect(search.sort?(:price)).to be_truthy
58
+ expect(search.sort?(:name)).to be_falsey
54
59
  end
55
60
 
56
- it "matches string also" do
61
+ it 'matches string also' do
57
62
  search = search_with_sort 'price desc'
58
63
 
59
- expect(search.sort?('price')).to be_true
60
- expect(search.sort?('name')).to be_false
64
+ expect(search.sort?('price')).to be_truthy
65
+ expect(search.sort?('name')).to be_falsey
61
66
  end
62
67
 
63
- it "matches exact strings" do
68
+ it 'matches exact strings' do
64
69
  search = search_with_sort 'price desc'
65
70
 
66
- expect(search.sort?('price desc')).to be_true
67
- expect(search.sort?('price asc')).to be_false
71
+ expect(search.sort?('price desc')).to be_truthy
72
+ expect(search.sort?('price asc')).to be_falsey
68
73
  end
69
74
  end
70
75
 
71
- describe "#sort_attribute" do
72
- it "returns sort option attribute" do
76
+ describe '#sort_attribute' do
77
+ it 'returns sort option attribute' do
73
78
  search = search_with_sort 'price desc'
74
79
  expect(search.sort_attribute).to eq 'price'
75
80
  end
76
81
 
77
- it "defaults to the first sort by option" do
82
+ it 'defaults to the first sort by option' do
78
83
  search = search_with_sort
79
84
  expect(search.sort_attribute).to eq 'name'
80
85
  end
81
86
 
82
- it "rejects invalid sort options, uses defaults" do
87
+ it 'rejects invalid sort options, uses defaults' do
83
88
  search = search_with_sort 'invalid'
84
89
  expect(search.sort_attribute).to eq 'name'
85
90
  end
86
91
  end
87
92
 
88
- describe "#sort_direction" do
89
- it "returns asc or desc" do
93
+ describe '#sort_direction' do
94
+ it 'returns asc or desc' do
90
95
  expect(search_with_sort('price desc').sort_direction).to eq 'desc'
91
96
  expect(search_with_sort('price asc').sort_direction).to eq 'asc'
92
97
  end
93
98
 
94
- it "defaults to desc" do
99
+ it 'defaults to desc' do
95
100
  expect(search_with_sort.sort_direction).to eq 'desc'
96
101
  expect(search_with_sort('price').sort_direction).to eq 'desc'
97
102
  end
98
103
 
99
- it "rejects invalid sort options, uses desc" do
104
+ it 'rejects invalid sort options, uses desc' do
100
105
  expect(search_with_sort('price foo').sort_direction).to eq 'desc'
101
106
  end
102
107
  end
103
108
 
104
- describe "#sort_direction_for" do
105
- it "returns desc if current sort attribute is not the given attribute" do
109
+ describe '#sort_direction_for' do
110
+ it 'returns desc if current sort attribute is not the given attribute' do
106
111
  expect(search_with_sort('price desc').sort_direction_for('name')).to eq 'desc'
107
112
  end
108
113
 
109
- it "returns asc if current sort attribute is the given attribute" do
114
+ it 'returns asc if current sort attribute is the given attribute' do
110
115
  expect(search_with_sort('name desc').sort_direction_for('name')).to eq 'asc'
111
116
  end
112
117
 
113
- it "returns desc if current sort attribute is the given attribute, but asc with direction" do
118
+ it 'returns desc if current sort attribute is the given attribute, but asc with direction' do
114
119
  expect(search_with_sort('name asc').sort_direction_for('name')).to eq 'desc'
115
120
  end
116
121
  end
117
122
 
118
- describe "#sort_params_for" do
119
- it "adds sort direction" do
123
+ describe '#sort_params_for' do
124
+ it 'adds sort direction' do
120
125
  search = search_with_sort 'name', name: 'test'
121
126
  expect(search.sort_params_for(:price)).to eq 'sort' => 'price desc', 'name' => 'test'
122
127
  end
123
128
 
124
- it "reverses sort direction if this is the current sort attribute" do
129
+ it 'reverses sort direction if this is the current sort attribute' do
125
130
  search = search_with_sort 'name desc', name: 'test'
126
131
  expect(search.sort_params_for(:name)).to eq 'sort' => 'name asc', 'name' => 'test'
127
132
  end
128
133
 
129
- it "accepts additional options" do
134
+ it 'accepts additional options' do
130
135
  search = search_with_sort
131
136
  expect(search.sort_params_for(:price, name: 'value')).to eq 'sort' => 'price desc', 'name' => 'value'
132
137
  end
133
138
  end
134
139
 
135
- describe "#reverted_sort_direction" do
136
- it "reverts sorting direction" do
140
+ describe '#reverted_sort_direction' do
141
+ it 'reverts sorting direction' do
137
142
  expect(search_with_sort('price desc').reverted_sort_direction).to eq 'asc'
138
143
  expect(search_with_sort('price asc').reverted_sort_direction).to eq 'desc'
139
144
  end
@@ -6,10 +6,10 @@ require 'will_paginate/active_record'
6
6
  module SearchObject
7
7
  module Plugin
8
8
  describe WillPaginate do
9
- it_behaves_like "a paging plugin" do
10
- it "uses will_paginate gem" do
9
+ it_behaves_like 'a paging plugin' do
10
+ it 'uses will_paginate gem' do
11
11
  search = search_with_page
12
- expect(search.results.respond_to? :total_entries).to be_true
12
+ expect(search.results.respond_to? :total_entries).to be_truthy
13
13
  end
14
14
  end
15
15
  end
@@ -2,69 +2,68 @@ require 'spec_helper'
2
2
 
3
3
  module SearchObject
4
4
  describe Search do
5
-
6
- describe ".params" do
7
- it "returns the passed params" do
5
+ describe '.params' do
6
+ it 'returns the passed params' do
8
7
  search = Search.new('scope', 'params', {})
9
8
  expect(search.params).to eq 'params'
10
9
  end
11
10
  end
12
11
 
13
- describe ".param" do
14
- it "returns the param value" do
15
- search = Search.new('scope', {name: 'value'}, {})
12
+ describe '.param' do
13
+ it 'returns the param value' do
14
+ search = Search.new('scope', { name: 'value' }, {})
16
15
  expect(search.param(:name)).to eq 'value'
17
16
  end
18
17
  end
19
18
 
20
- describe ".query" do
21
- it "returns filtered result" do
19
+ describe '.query' do
20
+ it 'returns filtered result' do
22
21
  actions = {
23
- :min => ->(scope, min) { scope.select { |v| v > min } },
22
+ min: ->(scope, min) { scope.select { |v| v > min } }
24
23
  }
25
24
 
26
- search = Search.new [1,2,3], {min: 2}, actions
25
+ search = Search.new [1, 2, 3], { min: 2 }, actions
27
26
  expect(search.query(Object.new)).to eq [3]
28
27
  end
29
28
 
30
- it "applies actions to params" do
29
+ it 'applies actions to params' do
31
30
  actions = {
32
- :min => ->(scope, min) { scope.select { |v| v > min } },
33
- :max => ->(scope, max) { scope.select { |v| v < max } },
31
+ min: ->(scope, min) { scope.select { |v| v > min } },
32
+ max: ->(scope, max) { scope.select { |v| v < max } }
34
33
  }
35
34
 
36
- search = Search.new [1,2,3,4,5], {min: 2, max: 5}, actions
37
- expect(search.query(Object.new)).to eq [3,4]
35
+ search = Search.new [1, 2, 3, 4, 5], { min: 2, max: 5 }, actions
36
+ expect(search.query(Object.new)).to eq [3, 4]
38
37
  end
39
38
 
40
- it "handles nil returned from action" do
39
+ it 'handles nil returned from action' do
41
40
  actions = {
42
- :odd => ->(scope, odd) { scope.select(&:odd?) if odd }
41
+ odd: ->(scope, odd) { scope.select(&:odd?) if odd }
43
42
  }
44
43
 
45
- search = Search.new [1,2,3,4,5], {odd: false}, actions
46
- expect(search.query(Object.new)).to eq [1,2,3,4,5]
44
+ search = Search.new [1, 2, 3, 4, 5], { odd: false }, actions
45
+ expect(search.query(Object.new)).to eq [1, 2, 3, 4, 5]
47
46
  end
48
47
 
49
- it "executes action in the passed context" do
48
+ it 'executes action in the passed context' do
50
49
  actions = {
51
- :search => ->(scope, _) { scope.select { |v| v == target_value } }
50
+ search: ->(scope, _) { scope.select { |v| v == target_value } }
52
51
  }
53
52
 
54
53
  context = double target_value: 2
55
54
 
56
- search = Search.new [1,2,3,4,5], {search: true}, actions
55
+ search = Search.new [1, 2, 3, 4, 5], { search: true }, actions
57
56
  expect(search.query(context)).to eq [2]
58
57
  end
59
58
  end
60
59
 
61
- describe ".count" do
62
- it "counts the results of the query" do
60
+ describe '.count' do
61
+ it 'counts the results of the query' do
63
62
  actions = {
64
- :value => ->(scope, value) { scope.select { |v| v == value} }
63
+ value: ->(scope, value) { scope.select { |v| v == value } }
65
64
  }
66
65
 
67
- search = Search.new [1,2,3], {value: 2}, actions
66
+ search = Search.new [1, 2, 3], { value: 2 }, actions
68
67
  expect(search.count(Object.new)).to eq 1
69
68
  end
70
69
  end
data/spec/spec_helper.rb CHANGED
@@ -10,4 +10,3 @@ require 'search_object'
10
10
  RSpec.configure do |config|
11
11
  config.expect_with(:rspec) { |c| c.syntax = :expect }
12
12
  end
13
-