scoped_search 4.1.2 → 4.1.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.rdoc +6 -0
- data/Gemfile.activerecord51 +2 -2
- data/lib/scoped_search/definition.rb +1 -1
- data/lib/scoped_search/query_builder.rb +10 -2
- data/lib/scoped_search/version.rb +1 -1
- data/spec/unit/definition_spec.rb +7 -0
- data/spec/unit/query_builder_spec.rb +18 -2
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8e71c1616716946f906c72f741b5e9b1950fdd8
|
4
|
+
data.tar.gz: d9386d5cc2fca4d418bc9a3d7a96d5b18601659b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc2400a7f26ef7f1bfed7273094a7cac04c5cb09b35509a4d2e3464b543f9f1413214c9100117d0d356620b9df8ed47fd504a0d5a208ec087ec5742f0d9c3afe
|
7
|
+
data.tar.gz: 3715276e0f495f13f1fd9158d6f4032c0a949682843e235e4b4dea8c035c33ad52de21427d894e1e4109f732299b5d5c8336e7cf9a6f20c70eeb2b29790ba580
|
data/CHANGELOG.rdoc
CHANGED
@@ -8,6 +8,12 @@ Please add an entry to the "Unreleased changes" section in your pull requests.
|
|
8
8
|
|
9
9
|
*Nothing yet*
|
10
10
|
|
11
|
+
=== Version 4.1.3
|
12
|
+
|
13
|
+
- Bugfix related to default fields for sets when using ext_method (#174)
|
14
|
+
- Improved error reporting for exceptions raised in ext_method (#173)
|
15
|
+
- Bugfix related to validtions of values used with :in operator (#171)
|
16
|
+
|
11
17
|
=== Version 4.1.2
|
12
18
|
|
13
19
|
- Bugfix related to using polymorphic relations introduced in 4.1.1 (#170)
|
data/Gemfile.activerecord51
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
3
|
|
4
|
-
gem 'actionview', '
|
5
|
-
gem 'activerecord', '
|
4
|
+
gem 'actionview', '~> 5.1.0'
|
5
|
+
gem 'activerecord', '~> 5.1.0'
|
6
6
|
|
7
7
|
platforms :jruby do
|
8
8
|
gem 'activerecord-jdbcsqlite3-adapter'
|
@@ -251,7 +251,7 @@ module ScopedSearch
|
|
251
251
|
column_types += [:integer] if value =~ INTEGER_REGXP
|
252
252
|
column_types += [:datetime, :date, :timestamp] if (parse_temporal(value))
|
253
253
|
|
254
|
-
default_fields.select { |field| column_types.include?(field.type)
|
254
|
+
default_fields.select { |field| !field.set? && column_types.include?(field.type) }
|
255
255
|
end
|
256
256
|
|
257
257
|
# Try to parse a string as a datetime.
|
@@ -402,7 +402,11 @@ module ScopedSearch
|
|
402
402
|
|
403
403
|
def to_ext_method_sql(key, operator, value, &block)
|
404
404
|
raise ScopedSearch::QueryNotSupported, "'#{definition.klass}' doesn't respond to '#{ext_method}'" unless definition.klass.respond_to?(ext_method)
|
405
|
-
|
405
|
+
begin
|
406
|
+
conditions = definition.klass.send(ext_method.to_sym, key, operator, value)
|
407
|
+
rescue StandardError => e
|
408
|
+
raise ScopedSearch::QueryNotSupported, "external method '#{ext_method}' failed with error: #{e}"
|
409
|
+
end
|
406
410
|
raise ScopedSearch::QueryNotSupported, "external method '#{ext_method}' should return hash" unless conditions.kind_of?(Hash)
|
407
411
|
sql = ''
|
408
412
|
conditions.map do |notification, content|
|
@@ -484,7 +488,11 @@ module ScopedSearch
|
|
484
488
|
raise ScopedSearch::QueryNotSupported, "Field '#{lhs.value}' not recognized for searching!" unless field
|
485
489
|
|
486
490
|
# see if the value passes user defined validation
|
487
|
-
|
491
|
+
if operator == :in
|
492
|
+
rhs.value.split(',').each { |v| validate_value(field, v) }
|
493
|
+
else
|
494
|
+
validate_value(field, rhs.value)
|
495
|
+
end
|
488
496
|
|
489
497
|
builder.sql_test(field, operator, rhs.value,lhs.value, &block)
|
490
498
|
end
|
@@ -124,4 +124,11 @@ describe ScopedSearch::Definition do
|
|
124
124
|
@subdefinition.fields.should eq(foo: field2, bar: field3)
|
125
125
|
end
|
126
126
|
end
|
127
|
+
|
128
|
+
describe '#default_fields_for' do
|
129
|
+
it "finds fields when there's a field not directly mapped to a DB column" do
|
130
|
+
@definition.define(:on => :custom_flag, :complete_value => { :true => true, :false => false }, :ext_method => :search_by_custom_flag)
|
131
|
+
@definition.default_fields_for("").should eq([])
|
132
|
+
end
|
133
|
+
end
|
127
134
|
end
|
@@ -47,6 +47,22 @@ describe ScopedSearch::QueryBuilder do
|
|
47
47
|
lambda { ScopedSearch::QueryBuilder.build_query(@definition, 'test_field = test_val') }.should raise_error(ScopedSearch::QueryNotSupported)
|
48
48
|
end
|
49
49
|
|
50
|
+
it "should validate value if validator selected" do
|
51
|
+
field = double('field')
|
52
|
+
field.stub(:only_explicit).and_return(true)
|
53
|
+
field.stub(:field).and_return(:test_field)
|
54
|
+
field.stub(:ext_method).and_return(nil)
|
55
|
+
field.stub(:key_field).and_return(nil)
|
56
|
+
field.stub(:set?).and_return(false)
|
57
|
+
field.stub(:to_sql).and_return('')
|
58
|
+
field.stub(:validator).and_return(->(value) { value =~ /^\d+$/ })
|
59
|
+
|
60
|
+
@definition.stub(:field_by_name).and_return(field)
|
61
|
+
|
62
|
+
lambda { ScopedSearch::QueryBuilder.build_query(@definition, 'test_field ^ (1,2)') }.should_not raise_error
|
63
|
+
lambda { ScopedSearch::QueryBuilder.build_query(@definition, 'test_field ^ (1,a)') }.should raise_error(ScopedSearch::QueryNotSupported)
|
64
|
+
end
|
65
|
+
|
50
66
|
it "should display custom error from validator" do
|
51
67
|
field = double('field')
|
52
68
|
field.stub(:only_explicit).and_return(true)
|
@@ -83,9 +99,9 @@ describe ScopedSearch::QueryBuilder do
|
|
83
99
|
lambda { ScopedSearch::QueryBuilder.build_query(@definition, 'test_field = test_val') }.should raise_error(ScopedSearch::QueryNotSupported, /doesn't respond to 'ext_test'/)
|
84
100
|
end
|
85
101
|
|
86
|
-
it "should
|
102
|
+
it "should raise error when method raises exception" do
|
87
103
|
klass.should_receive(:ext_test).and_raise('test')
|
88
|
-
ScopedSearch::QueryBuilder.build_query(@definition, 'test_field = test_val').should
|
104
|
+
lambda { ScopedSearch::QueryBuilder.build_query(@definition, 'test_field = test_val') }.should raise_error(ScopedSearch::QueryNotSupported, /failed with error: test/)
|
89
105
|
end
|
90
106
|
end
|
91
107
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scoped_search
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.1.
|
4
|
+
version: 4.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amos Benari
|
@@ -10,48 +10,48 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2018-03-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activerecord
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 4.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- -
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: 4.2.0
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: rspec
|
31
31
|
requirement: !ruby/object:Gem::Requirement
|
32
32
|
requirements:
|
33
|
-
- - ~>
|
33
|
+
- - "~>"
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: '3.0'
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
39
39
|
requirements:
|
40
|
-
- - ~>
|
40
|
+
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '3.0'
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: rake
|
45
45
|
requirement: !ruby/object:Gem::Requirement
|
46
46
|
requirements:
|
47
|
-
- -
|
47
|
+
- - ">="
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: '0'
|
50
50
|
type: :development
|
51
51
|
prerelease: false
|
52
52
|
version_requirements: !ruby/object:Gem::Requirement
|
53
53
|
requirements:
|
54
|
-
- -
|
54
|
+
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
56
|
version: '0'
|
57
57
|
description: |2
|
@@ -77,8 +77,8 @@ extra_rdoc_files:
|
|
77
77
|
- CONTRIBUTING.rdoc
|
78
78
|
- LICENSE
|
79
79
|
files:
|
80
|
-
- .gitignore
|
81
|
-
- .travis.yml
|
80
|
+
- ".gitignore"
|
81
|
+
- ".travis.yml"
|
82
82
|
- CHANGELOG.rdoc
|
83
83
|
- CONTRIBUTING.rdoc
|
84
84
|
- Gemfile
|
@@ -137,27 +137,27 @@ licenses:
|
|
137
137
|
metadata: {}
|
138
138
|
post_install_message:
|
139
139
|
rdoc_options:
|
140
|
-
- --title
|
140
|
+
- "--title"
|
141
141
|
- scoped_search
|
142
|
-
- --main
|
142
|
+
- "--main"
|
143
143
|
- README.rdoc
|
144
|
-
- --line-numbers
|
145
|
-
- --inline-source
|
144
|
+
- "--line-numbers"
|
145
|
+
- "--inline-source"
|
146
146
|
require_paths:
|
147
147
|
- lib
|
148
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- -
|
150
|
+
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 2.0.0
|
153
153
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
154
|
requirements:
|
155
|
-
- -
|
155
|
+
- - ">="
|
156
156
|
- !ruby/object:Gem::Version
|
157
157
|
version: '0'
|
158
158
|
requirements: []
|
159
159
|
rubyforge_project:
|
160
|
-
rubygems_version: 2.
|
160
|
+
rubygems_version: 2.6.8
|
161
161
|
signing_key:
|
162
162
|
specification_version: 4
|
163
163
|
summary: Easily search you ActiveRecord models with a simple query language using
|