daedal 0.0.3 → 0.0.4
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/Gemfile +1 -1
- data/Gemfile.lock +1 -1
- data/README.md +29 -1
- data/daedal.gemspec +1 -1
- data/lib/daedal/attributes.rb +5 -0
- data/lib/daedal/attributes/distance_unit.rb +15 -0
- data/lib/daedal/attributes/filter.rb +13 -0
- data/lib/daedal/attributes/filter_array.rb +24 -0
- data/lib/daedal/attributes/lower_case_string.rb +14 -0
- data/lib/daedal/attributes/query.rb +13 -0
- data/lib/daedal/attributes/query_array.rb +2 -0
- data/lib/daedal/filters.rb +3 -0
- data/lib/daedal/filters/and_filter.rb +21 -0
- data/lib/daedal/filters/base_filter.rb +1 -1
- data/lib/daedal/filters/geo_distance_filter.rb +27 -0
- data/lib/daedal/filters/range_filter.rb +27 -0
- data/lib/daedal/queries.rb +1 -0
- data/lib/daedal/queries/bool_query.rb +5 -4
- data/lib/daedal/queries/constant_score_query.rb +2 -2
- data/lib/daedal/queries/dis_max_query.rb +3 -2
- data/lib/daedal/queries/filtered_query.rb +2 -2
- data/lib/daedal/queries/match_query.rb +2 -1
- data/lib/daedal/queries/nested_query.rb +4 -4
- data/lib/daedal/queries/prefix_query.rb +25 -0
- data/lib/daedal/version.rb +3 -0
- data/spec/unit/daedal/filters/and_filter_spec.rb +87 -0
- data/spec/unit/daedal/filters/geo_distance_filter_spec.rb +104 -0
- data/spec/unit/daedal/filters/range_filter_spec.rb +90 -0
- data/spec/unit/daedal/filters/term_filter_spec.rb +3 -3
- data/spec/unit/daedal/filters/terms_filter_spec.rb +2 -2
- data/spec/unit/daedal/queries/bool_query_spec.rb +42 -4
- data/spec/unit/daedal/queries/constant_score_query_spec.rb +3 -3
- data/spec/unit/daedal/queries/dis_max_query_spec.rb +18 -2
- data/spec/unit/daedal/queries/filtered_query_spec.rb +3 -3
- data/spec/unit/daedal/queries/match_query_spec.rb +36 -8
- data/spec/unit/daedal/queries/multi_match_query_spec.rb +8 -8
- data/spec/unit/daedal/queries/nested_query_spec.rb +4 -4
- data/spec/unit/daedal/queries/prefix_query_spec.rb +85 -0
- metadata +17 -3
@@ -37,19 +37,19 @@ describe Daedal::Queries::FilteredQuery do
|
|
37
37
|
expect(query.filter.to_hash).to eq base_filter.to_hash
|
38
38
|
end
|
39
39
|
it 'will have the correct hash representation' do
|
40
|
-
expect(query.to_hash).to eq({filtered: {query: {match_all: {}}, filter:
|
40
|
+
expect(query.to_hash).to eq({filtered: {query: {match_all: {}}, filter: nil}})
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
44
|
context 'with an invalid query specified' do
|
45
45
|
it 'will raise an error' do
|
46
|
-
expect{subject.new(query: :foo)}.to raise_error
|
46
|
+
expect{subject.new(query: :foo)}.to raise_error(Virtus::CoercionError)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
context 'with an invalid filter specified' do
|
51
51
|
it 'will raise an error' do
|
52
|
-
expect{subject.new(filter: :foo)}.to raise_error
|
52
|
+
expect{subject.new(filter: :foo)}.to raise_error(Virtus::CoercionError)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -13,13 +13,13 @@ describe Daedal::Queries::MatchQuery do
|
|
13
13
|
|
14
14
|
context 'without a field or term given' do
|
15
15
|
it 'will raise an error' do
|
16
|
-
expect {subject.new}.to raise_error
|
16
|
+
expect {subject.new}.to raise_error(Virtus::CoercionError)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
20
|
context 'without a term given' do
|
21
21
|
it 'will raise an error' do
|
22
|
-
expect {subject.new(field: :foo)}.to raise_error
|
22
|
+
expect {subject.new(field: :foo)}.to raise_error(Virtus::CoercionError)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
@@ -77,7 +77,7 @@ describe Daedal::Queries::MatchQuery do
|
|
77
77
|
|
78
78
|
context 'with a non-valid operator specified' do
|
79
79
|
it 'will raise an error' do
|
80
|
-
expect {subject.new(field: :foo, query: :bar, operator: :foo)}.to raise_error
|
80
|
+
expect {subject.new(field: :foo, query: :bar, operator: :foo)}.to raise_error(Virtus::CoercionError)
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -105,7 +105,7 @@ describe Daedal::Queries::MatchQuery do
|
|
105
105
|
|
106
106
|
context 'with a non-valid type specified' do
|
107
107
|
it 'will raise an error' do
|
108
|
-
expect {subject.new(field: :foo, query: :bar, type: :foo)}.to raise_error
|
108
|
+
expect {subject.new(field: :foo, query: :bar, type: :foo)}.to raise_error(Virtus::CoercionError)
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
@@ -133,7 +133,7 @@ describe Daedal::Queries::MatchQuery do
|
|
133
133
|
|
134
134
|
context 'with a non-integer minimum should match specified' do
|
135
135
|
it 'will raise an error' do
|
136
|
-
expect {subject.new(field: :foo, query: :bar, minimum_should_match: 'foo')}.to raise_error
|
136
|
+
expect {subject.new(field: :foo, query: :bar, minimum_should_match: 'foo')}.to raise_error(Virtus::CoercionError)
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -161,7 +161,7 @@ describe Daedal::Queries::MatchQuery do
|
|
161
161
|
|
162
162
|
context 'with a non-float cutoff frequency specified' do
|
163
163
|
it 'will raise an error' do
|
164
|
-
expect {subject.new(field: :foo, query: :bar, cutoff_frequency: 'foo')}.to raise_error
|
164
|
+
expect {subject.new(field: :foo, query: :bar, cutoff_frequency: 'foo')}.to raise_error(Virtus::CoercionError)
|
165
165
|
end
|
166
166
|
end
|
167
167
|
|
@@ -211,7 +211,35 @@ describe Daedal::Queries::MatchQuery do
|
|
211
211
|
|
212
212
|
context 'with a non integer boost specified' do
|
213
213
|
it 'will raise an error' do
|
214
|
-
expect {subject.new(field: :foo, query: :bar, boost: 'foo')}.to raise_error
|
214
|
+
expect {subject.new(field: :foo, query: :bar, boost: 'foo')}.to raise_error(Virtus::CoercionError)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
context 'with a slop of 2 specified' do
|
219
|
+
let(:match_query) do
|
220
|
+
subject.new(field: :foo, query: :bar, slop: 2)
|
221
|
+
end
|
222
|
+
|
223
|
+
before do
|
224
|
+
base_query[:match][:foo][:slop] = 2
|
225
|
+
end
|
226
|
+
|
227
|
+
it 'will set the phrase type to :phrase' do
|
228
|
+
expect(match_query.slop).to eq 2
|
229
|
+
end
|
230
|
+
|
231
|
+
it 'will have the correct hash representation' do
|
232
|
+
expect(match_query.to_hash).to eq base_query
|
233
|
+
end
|
234
|
+
|
235
|
+
it 'will have the correct json representation' do
|
236
|
+
expect(match_query.to_json).to eq base_query.to_json
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
context 'with a non integer slop specified' do
|
241
|
+
it 'will raise an error' do
|
242
|
+
expect {subject.new(field: :foo, query: :bar, slop: 'foo')}.to raise_error(Virtus::CoercionError)
|
215
243
|
end
|
216
244
|
end
|
217
245
|
|
@@ -239,7 +267,7 @@ describe Daedal::Queries::MatchQuery do
|
|
239
267
|
|
240
268
|
context 'with a non float or integer fuzziness specified' do
|
241
269
|
it 'will raise an error' do
|
242
|
-
expect {subject.new(field: :foo, query: :bar, fuzziness: 'foo')}.to raise_error
|
270
|
+
expect {subject.new(field: :foo, query: :bar, fuzziness: 'foo')}.to raise_error(Virtus::CoercionError)
|
243
271
|
end
|
244
272
|
end
|
245
273
|
end
|
@@ -21,13 +21,13 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
21
21
|
|
22
22
|
context 'without a field or term given' do
|
23
23
|
it 'will raise an error' do
|
24
|
-
expect {subject.new}.to raise_error
|
24
|
+
expect {subject.new}.to raise_error(Virtus::CoercionError)
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
context 'without fields given' do
|
29
29
|
it 'will raise an error' do
|
30
|
-
expect {subject.new(query: term)}.to raise_error
|
30
|
+
expect {subject.new(query: term)}.to raise_error(RuntimeError)
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -85,7 +85,7 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
85
85
|
|
86
86
|
context 'with a non-valid operator specified' do
|
87
87
|
it 'will raise an error' do
|
88
|
-
expect {subject.new(query: term, fields: fields, operator: :foo)}.to raise_error
|
88
|
+
expect {subject.new(query: term, fields: fields, operator: :foo)}.to raise_error(Virtus::CoercionError)
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -113,7 +113,7 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
113
113
|
|
114
114
|
context 'with a non-valid type specified' do
|
115
115
|
it 'will raise an error' do
|
116
|
-
expect {subject.new(query: term, fields: fields, type: :foo)}.to raise_error
|
116
|
+
expect {subject.new(query: term, fields: fields, type: :foo)}.to raise_error(Virtus::CoercionError)
|
117
117
|
end
|
118
118
|
end
|
119
119
|
|
@@ -141,7 +141,7 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
141
141
|
|
142
142
|
context 'with a non-integer minimum should match specified' do
|
143
143
|
it 'will raise an error' do
|
144
|
-
expect {subject.new(query: term, fields: fields, minimum_should_match: 'foo')}.to raise_error
|
144
|
+
expect {subject.new(query: term, fields: fields, minimum_should_match: 'foo')}.to raise_error(Virtus::CoercionError)
|
145
145
|
end
|
146
146
|
end
|
147
147
|
|
@@ -169,7 +169,7 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
169
169
|
|
170
170
|
context 'with a non-float cutoff frequency specified' do
|
171
171
|
it 'will raise an error' do
|
172
|
-
expect {subject.new(query: term, fields: fields, cutoff_frequency: 'foo')}.to raise_error
|
172
|
+
expect {subject.new(query: term, fields: fields, cutoff_frequency: 'foo')}.to raise_error(Virtus::CoercionError)
|
173
173
|
end
|
174
174
|
end
|
175
175
|
|
@@ -219,7 +219,7 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
219
219
|
|
220
220
|
context 'with a non integer boost specified' do
|
221
221
|
it 'will raise an error' do
|
222
|
-
expect {subject.new(query: term, fields: fields, boost: 'foo')}.to raise_error
|
222
|
+
expect {subject.new(query: term, fields: fields, boost: 'foo')}.to raise_error(Virtus::CoercionError)
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|
@@ -247,7 +247,7 @@ describe Daedal::Queries::MultiMatchQuery do
|
|
247
247
|
|
248
248
|
context 'with a non float or integer fuzziness specified' do
|
249
249
|
it 'will raise an error' do
|
250
|
-
expect {subject.new(query: term, fields: fields, fuzziness: 'foo')}.to raise_error
|
250
|
+
expect {subject.new(query: term, fields: fields, fuzziness: 'foo')}.to raise_error(Virtus::CoercionError)
|
251
251
|
end
|
252
252
|
end
|
253
253
|
end
|
@@ -14,19 +14,19 @@ describe Daedal::Queries::NestedQuery do
|
|
14
14
|
|
15
15
|
context 'with no path specified' do
|
16
16
|
it 'will raise an error' do
|
17
|
-
expect{subject.new(query: match_all_query)}.to raise_error
|
17
|
+
expect{subject.new(query: match_all_query)}.to raise_error(Virtus::CoercionError)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
context 'with no query specified' do
|
22
22
|
it 'will raise an error' do
|
23
|
-
expect{subject.new(path: 'foo')}.to raise_error
|
23
|
+
expect{subject.new(path: 'foo')}.to raise_error(Virtus::CoercionError)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
context 'with an invalid query specified' do
|
28
28
|
it 'will raise an error' do
|
29
|
-
expect{subject.new(query: :foo)}.to raise_error
|
29
|
+
expect{subject.new(query: :foo)}.to raise_error(Virtus::CoercionError)
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -76,7 +76,7 @@ describe Daedal::Queries::NestedQuery do
|
|
76
76
|
|
77
77
|
context 'with an invalid score_mode specified' do
|
78
78
|
it 'will raise an error' do
|
79
|
-
expect{subject.new(query: match_all_query, path: :foo, score_mode: 'foo')}.to raise_error
|
79
|
+
expect{subject.new(query: match_all_query, path: :foo, score_mode: 'foo')}.to raise_error(Virtus::CoercionError)
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'daedal/queries'
|
3
|
+
|
4
|
+
describe Daedal::Queries::PrefixQuery do
|
5
|
+
|
6
|
+
subject do
|
7
|
+
Daedal::Queries::PrefixQuery
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'with no field or term specified' do
|
11
|
+
it 'will raise an error' do
|
12
|
+
expect {subject.new}.to raise_error(Virtus::CoercionError)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with no field specified' do
|
17
|
+
it 'will raise an error' do
|
18
|
+
expect {subject.new(query: :foo)}.to raise_error(Virtus::CoercionError)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with no term specified' do
|
23
|
+
it 'will raise an error' do
|
24
|
+
expect {subject.new(field: :foo)}.to raise_error(Virtus::CoercionError)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'with a field and a term specified' do
|
29
|
+
let(:query) do
|
30
|
+
subject.new(field: :foo, query: :bar)
|
31
|
+
end
|
32
|
+
let(:hash_query) do
|
33
|
+
{prefix: {foo: 'bar'}}
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'will create a prefix query with the correct values' do
|
37
|
+
expect(query.field).to eq :foo
|
38
|
+
expect(query.query).to eq 'bar'
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'will have the correct hash and json representation' do
|
42
|
+
expect(query.to_hash).to eq hash_query
|
43
|
+
expect(query.to_json).to eq hash_query.to_json
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with a field and an upper cased term specified' do
|
48
|
+
let(:query) do
|
49
|
+
subject.new(field: :foo, query: 'Bar')
|
50
|
+
end
|
51
|
+
let(:hash_query) do
|
52
|
+
{prefix: {foo: 'bar'}}
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'will create a prefix query and downcase the term' do
|
56
|
+
expect(query.field).to eq :foo
|
57
|
+
expect(query.query).to eq 'bar'
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'will have the correct hash and json representations' do
|
61
|
+
expect(query.to_hash).to eq hash_query
|
62
|
+
expect(query.to_json).to eq hash_query.to_json
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'with a boost specified' do
|
67
|
+
let(:query) do
|
68
|
+
subject.new(field: :foo, query: :bar, boost: 5.0)
|
69
|
+
end
|
70
|
+
let(:hash_query) do
|
71
|
+
{prefix: {foo: 'bar', boost: 5.0}}
|
72
|
+
end
|
73
|
+
|
74
|
+
it 'will create a prefix query with the correct values' do
|
75
|
+
expect(query.field).to eq :foo
|
76
|
+
expect(query.query).to eq 'bar'
|
77
|
+
expect(query.boost).to eq 5.0
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'will have the correct hash and json representation' do
|
81
|
+
expect(query.to_hash).to eq hash_query
|
82
|
+
expect(query.to_json).to eq hash_query.to_json
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daedal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Schuch
|
@@ -14,14 +14,14 @@ dependencies:
|
|
14
14
|
name: virtus
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.0.0
|
27
27
|
description: Classes for easier ElasticSearch query creation
|
@@ -40,12 +40,20 @@ files:
|
|
40
40
|
- daedal.gemspec
|
41
41
|
- lib/daedal.rb
|
42
42
|
- lib/daedal/attributes.rb
|
43
|
+
- lib/daedal/attributes/distance_unit.rb
|
44
|
+
- lib/daedal/attributes/filter.rb
|
45
|
+
- lib/daedal/attributes/filter_array.rb
|
46
|
+
- lib/daedal/attributes/lower_case_string.rb
|
43
47
|
- lib/daedal/attributes/match_type.rb
|
44
48
|
- lib/daedal/attributes/operator.rb
|
49
|
+
- lib/daedal/attributes/query.rb
|
45
50
|
- lib/daedal/attributes/query_array.rb
|
46
51
|
- lib/daedal/attributes/score_mode.rb
|
47
52
|
- lib/daedal/filters.rb
|
53
|
+
- lib/daedal/filters/and_filter.rb
|
48
54
|
- lib/daedal/filters/base_filter.rb
|
55
|
+
- lib/daedal/filters/geo_distance_filter.rb
|
56
|
+
- lib/daedal/filters/range_filter.rb
|
49
57
|
- lib/daedal/filters/term_filter.rb
|
50
58
|
- lib/daedal/filters/terms_filter.rb
|
51
59
|
- lib/daedal/queries.rb
|
@@ -58,7 +66,12 @@ files:
|
|
58
66
|
- lib/daedal/queries/match_query.rb
|
59
67
|
- lib/daedal/queries/multi_match_query.rb
|
60
68
|
- lib/daedal/queries/nested_query.rb
|
69
|
+
- lib/daedal/queries/prefix_query.rb
|
70
|
+
- lib/daedal/version.rb
|
61
71
|
- spec/spec_helper.rb
|
72
|
+
- spec/unit/daedal/filters/and_filter_spec.rb
|
73
|
+
- spec/unit/daedal/filters/geo_distance_filter_spec.rb
|
74
|
+
- spec/unit/daedal/filters/range_filter_spec.rb
|
62
75
|
- spec/unit/daedal/filters/term_filter_spec.rb
|
63
76
|
- spec/unit/daedal/filters/terms_filter_spec.rb
|
64
77
|
- spec/unit/daedal/queries/bool_query_spec.rb
|
@@ -69,6 +82,7 @@ files:
|
|
69
82
|
- spec/unit/daedal/queries/match_query_spec.rb
|
70
83
|
- spec/unit/daedal/queries/multi_match_query_spec.rb
|
71
84
|
- spec/unit/daedal/queries/nested_query_spec.rb
|
85
|
+
- spec/unit/daedal/queries/prefix_query_spec.rb
|
72
86
|
homepage: https://github.com/cschuch/daedal
|
73
87
|
licenses:
|
74
88
|
- MIT
|