chewy 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +26 -4
- data/CHANGELOG.md +16 -0
- data/Gemfile +3 -1
- data/README.md +2 -10
- data/chewy.gemspec +0 -1
- data/gemfiles/Gemfile.rails-3.2.active_record +6 -0
- data/gemfiles/Gemfile.rails-3.2.active_record.kaminari +7 -0
- data/gemfiles/Gemfile.rails-3.2.active_record.will_paginate +7 -0
- data/gemfiles/Gemfile.rails-4.0.active_record +6 -0
- data/gemfiles/Gemfile.rails-4.0.active_record.kaminari +7 -0
- data/gemfiles/Gemfile.rails-4.0.active_record.will_paginate +7 -0
- data/gemfiles/Gemfile.rails-4.0.mongoid +6 -0
- data/gemfiles/Gemfile.rails-4.0.mongoid.kaminari +7 -0
- data/gemfiles/Gemfile.rails-4.0.mongoid.will_paginate +7 -0
- data/gemfiles/Gemfile.rails-4.1.active_record +6 -0
- data/gemfiles/Gemfile.rails-4.1.active_record.kaminari +7 -0
- data/gemfiles/Gemfile.rails-4.1.active_record.will_paginate +7 -0
- data/gemfiles/Gemfile.rails-4.1.mongoid +6 -0
- data/gemfiles/Gemfile.rails-4.1.mongoid.kaminari +7 -0
- data/gemfiles/Gemfile.rails-4.1.mongoid.will_paginate +7 -0
- data/gemfiles/Gemfile.rails-4.2.active_record +6 -0
- data/gemfiles/Gemfile.rails-4.2.active_record.kaminari +7 -0
- data/gemfiles/Gemfile.rails-4.2.active_record.will_paginate +7 -0
- data/gemfiles/Gemfile.rails-4.2.mongoid +6 -0
- data/gemfiles/Gemfile.rails-4.2.mongoid.kaminari +7 -0
- data/gemfiles/Gemfile.rails-4.2.mongoid.will_paginate +7 -0
- data/lib/chewy.rb +33 -5
- data/lib/chewy/config.rb +1 -0
- data/lib/chewy/index/search.rb +6 -3
- data/lib/chewy/query.rb +74 -1
- data/lib/chewy/query/compose.rb +4 -4
- data/lib/chewy/query/pagination.rb +5 -4
- data/lib/chewy/query/pagination/kaminari.rb +1 -1
- data/lib/chewy/query/pagination/will_paginate.rb +27 -0
- data/lib/chewy/type.rb +1 -0
- data/lib/chewy/type/adapter/active_record.rb +2 -2
- data/lib/chewy/type/adapter/mongoid.rb +147 -0
- data/lib/chewy/type/adapter/object.rb +1 -1
- data/lib/chewy/type/import.rb +1 -0
- data/lib/chewy/type/observe.rb +34 -6
- data/lib/chewy/version.rb +1 -1
- data/spec/chewy/config_spec.rb +17 -17
- data/spec/chewy/fields/base_spec.rb +62 -62
- data/spec/chewy/fields/root_spec.rb +5 -5
- data/spec/chewy/index/actions_spec.rb +127 -127
- data/spec/chewy/index/aliases_spec.rb +9 -9
- data/spec/chewy/index/search_spec.rb +4 -4
- data/spec/chewy/index/settings_spec.rb +33 -33
- data/spec/chewy/index_spec.rb +49 -49
- data/spec/chewy/query/criteria_spec.rb +173 -161
- data/spec/chewy/query/filters_spec.rb +76 -76
- data/spec/chewy/query/loading_spec.rb +54 -23
- data/spec/chewy/query/nodes/and_spec.rb +4 -4
- data/spec/chewy/query/nodes/bool_spec.rb +8 -8
- data/spec/chewy/query/nodes/equal_spec.rb +19 -19
- data/spec/chewy/query/nodes/exists_spec.rb +6 -6
- data/spec/chewy/query/nodes/has_child_spec.rb +25 -25
- data/spec/chewy/query/nodes/has_parent_spec.rb +25 -25
- data/spec/chewy/query/nodes/match_all_spec.rb +1 -1
- data/spec/chewy/query/nodes/missing_spec.rb +4 -4
- data/spec/chewy/query/nodes/not_spec.rb +4 -4
- data/spec/chewy/query/nodes/or_spec.rb +4 -4
- data/spec/chewy/query/nodes/prefix_spec.rb +5 -5
- data/spec/chewy/query/nodes/query_spec.rb +2 -2
- data/spec/chewy/query/nodes/range_spec.rb +18 -18
- data/spec/chewy/query/nodes/raw_spec.rb +1 -1
- data/spec/chewy/query/nodes/regexp_spec.rb +18 -18
- data/spec/chewy/query/nodes/script_spec.rb +4 -4
- data/spec/chewy/query/pagination/kaminari_spec.rb +41 -39
- data/spec/chewy/query/pagination/will_paginage_spec.rb +60 -0
- data/spec/chewy/query/pagination_spec.rb +8 -7
- data/spec/chewy/query_spec.rb +166 -167
- data/spec/chewy/rspec/update_index_spec.rb +1 -1
- data/spec/chewy/runtime/version_spec.rb +30 -30
- data/spec/chewy/runtime_spec.rb +3 -3
- data/spec/chewy/type/actions_spec.rb +3 -3
- data/spec/chewy/type/adapter/active_record_spec.rb +143 -143
- data/spec/chewy/type/adapter/mongoid_spec.rb +219 -0
- data/spec/chewy/type/adapter/object_spec.rb +39 -39
- data/spec/chewy/type/import_spec.rb +67 -37
- data/spec/chewy/type/mapping_spec.rb +12 -12
- data/spec/chewy/type/observe_spec.rb +5 -6
- data/spec/chewy/type/wrapper_spec.rb +12 -12
- data/spec/chewy_spec.rb +26 -28
- data/spec/spec_helper.rb +19 -31
- data/spec/support/active_record.rb +52 -0
- data/spec/support/class_helpers.rb +0 -4
- data/spec/support/mongoid.rb +87 -0
- metadata +33 -18
- data/gemfiles/Gemfile.rails-3.2 +0 -15
- data/gemfiles/Gemfile.rails-4.0 +0 -15
@@ -6,35 +6,35 @@ describe Chewy::Query::Nodes::HasParent do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { has_parent('child') }.
|
10
|
-
|
11
|
-
|
12
|
-
specify { render { has_parent('child').filter(term: {name: 'name'}) }
|
13
|
-
.
|
14
|
-
specify { render { has_parent('child').filter{ name == 'name' } }
|
15
|
-
.
|
16
|
-
specify { render { has_parent('child').filter(term: {name: 'name'}).filter{ age < 42 } }
|
17
|
-
.
|
18
|
-
specify { render { has_parent('child').filter(term: {name: 'name'}).filter{ age < 42 }.filter_mode(:or) }
|
19
|
-
.
|
20
|
-
|
21
|
-
specify { render { has_parent('child').query(match: {name: 'name'}) }
|
22
|
-
.
|
23
|
-
specify { render { has_parent('child').query(match: {name: 'name'}).query(match: {surname: 'surname'}) }
|
24
|
-
.
|
25
|
-
specify { render { has_parent('child').query(match: {name: 'name'}).query(match: {surname: 'surname'}).query_mode(:should) }
|
26
|
-
.
|
27
|
-
|
28
|
-
specify { render { has_parent('child').filter{ name == 'name' }.query(match: {name: 'name'}) }
|
29
|
-
.
|
30
|
-
specify { render { has_parent('child').filter{ name == 'name' }.query(match: {name: 'name'}).filter{ age < 42 } }
|
31
|
-
.
|
9
|
+
specify { expect(render { has_parent('child') }).to eq({has_parent: {type: 'child'}}) }
|
10
|
+
|
11
|
+
|
12
|
+
specify { expect(render { has_parent('child').filter(term: {name: 'name'}) })
|
13
|
+
.to eq({has_parent: {type: 'child', filter: {term: {name: 'name'}}}}) }
|
14
|
+
specify { expect(render { has_parent('child').filter{ name == 'name' } })
|
15
|
+
.to eq({has_parent: {type: 'child', filter: {term: {'name' => 'name'}}}}) }
|
16
|
+
specify { expect(render { has_parent('child').filter(term: {name: 'name'}).filter{ age < 42 } })
|
17
|
+
.to eq({has_parent: {type: 'child', filter: {and: [{term: {name: 'name'}}, range: {'age' => {lt: 42}}]}}}) }
|
18
|
+
specify { expect(render { has_parent('child').filter(term: {name: 'name'}).filter{ age < 42 }.filter_mode(:or) })
|
19
|
+
.to eq({has_parent: {type: 'child', filter: {or: [{term: {name: 'name'}}, range: {'age' => {lt: 42}}]}}}) }
|
20
|
+
|
21
|
+
specify { expect(render { has_parent('child').query(match: {name: 'name'}) })
|
22
|
+
.to eq({has_parent: {type: 'child', query: {match: {name: 'name'}}}}) }
|
23
|
+
specify { expect(render { has_parent('child').query(match: {name: 'name'}).query(match: {surname: 'surname'}) })
|
24
|
+
.to eq({has_parent: {type: 'child', query: {bool: {must: [{match: {name: 'name'}}, {match: {surname: 'surname'}}]}}}}) }
|
25
|
+
specify { expect(render { has_parent('child').query(match: {name: 'name'}).query(match: {surname: 'surname'}).query_mode(:should) })
|
26
|
+
.to eq({has_parent: {type: 'child', query: {bool: {should: [{match: {name: 'name'}}, {match: {surname: 'surname'}}]}}}}) }
|
27
|
+
|
28
|
+
specify { expect(render { has_parent('child').filter{ name == 'name' }.query(match: {name: 'name'}) })
|
29
|
+
.to eq({has_parent: {type: 'child', query: {filtered: {query: {match: {name: 'name'}}, filter: {term: {'name' => 'name'}}}}}}) }
|
30
|
+
specify { expect(render { has_parent('child').filter{ name == 'name' }.query(match: {name: 'name'}).filter{ age < 42 } })
|
31
|
+
.to eq({has_parent: {type: 'child', query: {filtered: {query: {match: {name: 'name'}}, filter: {and: [{term: {'name' => 'name'}}, range: {'age' => {lt: 42}}]}}}}}) }
|
32
32
|
|
33
33
|
context do
|
34
34
|
let(:name) { 'Name' }
|
35
35
|
|
36
|
-
specify { render { has_parent('child').filter{ name == o{name} } }
|
37
|
-
.
|
36
|
+
specify { expect(render { has_parent('child').filter{ name == o{name} } })
|
37
|
+
.to eq({has_parent: {type: 'child', filter: {term: {'name' => 'Name'}}}}) }
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -6,10 +6,10 @@ describe Chewy::Query::Nodes::Missing do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { !name }.
|
10
|
-
specify { render { !name? }.
|
11
|
-
specify { render { name == nil }.
|
9
|
+
specify { expect(render { !name }).to eq({missing: {field: 'name', existence: true, null_value: false}}) }
|
10
|
+
specify { expect(render { !name? }).to eq({missing: {field: 'name', existence: true, null_value: true}}) }
|
11
|
+
specify { expect(render { name == nil }).to eq({missing: {field: 'name', existence: false, null_value: true}}) }
|
12
12
|
|
13
|
-
specify { render { ~!name }.
|
13
|
+
specify { expect(render { ~!name }).to eq({missing: {field: 'name', existence: true, null_value: false}}) }
|
14
14
|
end
|
15
15
|
end
|
@@ -6,11 +6,11 @@ describe Chewy::Query::Nodes::Not do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { !(email == 'email') }.
|
9
|
+
specify { expect(render { !(email == 'email') }).to eq({
|
10
10
|
not: {term: {'email' => 'email'}}
|
11
|
-
} }
|
12
|
-
specify { render { ~!(email == 'email') }.
|
11
|
+
}) }
|
12
|
+
specify { expect(render { ~!(email == 'email') }).to eq({
|
13
13
|
not: {filter: {term: {'email' => 'email'}}, _cache: true}
|
14
|
-
} }
|
14
|
+
}) }
|
15
15
|
end
|
16
16
|
end
|
@@ -6,11 +6,11 @@ describe Chewy::Query::Nodes::Or do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { name? | (email == 'email') }.
|
9
|
+
specify { expect(render { name? | (email == 'email') }).to eq({
|
10
10
|
or: [{exists: {field: 'name'}}, {term: {'email' => 'email'}}]
|
11
|
-
} }
|
12
|
-
specify { render { ~(name? | (email == 'email')) }.
|
11
|
+
}) }
|
12
|
+
specify { expect(render { ~(name? | (email == 'email')) }).to eq({
|
13
13
|
or: {filters: [{exists: {field: 'name'}}, {term: {'email' => 'email'}}], _cache: true}
|
14
|
-
} }
|
14
|
+
}) }
|
15
15
|
end
|
16
16
|
end
|
@@ -6,11 +6,11 @@ describe Chewy::Query::Nodes::Prefix do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { name =~ 'nam' }.
|
10
|
-
specify { render { name !~ 'nam' }.
|
9
|
+
specify { expect(render { name =~ 'nam' }).to eq({prefix: {'name' => 'nam'}}) }
|
10
|
+
specify { expect(render { name !~ 'nam' }).to eq({not: {prefix: {'name' => 'nam'}}}) }
|
11
11
|
|
12
|
-
specify { render { ~name =~ 'nam' }.
|
13
|
-
specify { render { ~name !~ 'nam' }.
|
14
|
-
specify { render { name(cache: false) =~ 'nam' }.
|
12
|
+
specify { expect(render { ~name =~ 'nam' }).to eq({prefix: {'name' => 'nam', _cache: true}}) }
|
13
|
+
specify { expect(render { ~name !~ 'nam' }).to eq({not: {prefix: {'name' => 'nam', _cache: true}}}) }
|
14
|
+
specify { expect(render { name(cache: false) =~ 'nam' }).to eq({prefix: {'name' => 'nam', _cache: false}}) }
|
15
15
|
end
|
16
16
|
end
|
@@ -6,7 +6,7 @@ describe Chewy::Query::Nodes::Query do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { q(query_string: {query: 'name: hello'}) }.
|
10
|
-
specify { render { ~q(query_string: {query: 'name: hello'}) }.
|
9
|
+
specify { expect(render { q(query_string: {query: 'name: hello'}) }).to eq({query: {query_string: {query: 'name: hello'}}}) }
|
10
|
+
specify { expect(render { ~q(query_string: {query: 'name: hello'}) }).to eq({fquery: {query: {query_string: {query: 'name: hello'}}, _cache: true}}) }
|
11
11
|
end
|
12
12
|
end
|
@@ -6,27 +6,27 @@ describe Chewy::Query::Nodes::Range do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { age > nil }.
|
10
|
-
specify { render { age == (nil..nil) }.
|
9
|
+
specify { expect(render { age > nil }).to eq({range: {'age' => {gt: nil}}}) }
|
10
|
+
specify { expect(render { age == (nil..nil) }).to eq({range: {'age' => {gt: nil, lt: nil}}}) }
|
11
11
|
|
12
|
-
specify { render { age > 42 }.
|
13
|
-
specify { render { age == (42..45) }.
|
14
|
-
specify { render { age == [42..45] }.
|
15
|
-
specify { render { (age > 42) & (age <= 45) }.
|
12
|
+
specify { expect(render { age > 42 }).to eq({range: {'age' => {gt: 42}}}) }
|
13
|
+
specify { expect(render { age == (42..45) }).to eq({range: {'age' => {gt: 42, lt: 45}}}) }
|
14
|
+
specify { expect(render { age == [42..45] }).to eq({range: {'age' => {gte: 42, lte: 45}}}) }
|
15
|
+
specify { expect(render { (age > 42) & (age <= 45) }).to eq({range: {'age' => {gt: 42, lte: 45}}}) }
|
16
16
|
|
17
|
-
specify { render { ~age > 42 }.
|
18
|
-
specify { render { ~age == (42..45) }.
|
19
|
-
specify { render { ~age == [42..45] }.
|
20
|
-
specify { render { (age > 42) & ~(age <= 45) }.
|
21
|
-
specify { render { (~age > 42) & (age <= 45) }.
|
17
|
+
specify { expect(render { ~age > 42 }).to eq({range: {'age' => {gt: 42}, _cache: true}}) }
|
18
|
+
specify { expect(render { ~age == (42..45) }).to eq({range: {'age' => {gt: 42, lt: 45}, _cache: true}}) }
|
19
|
+
specify { expect(render { ~age == [42..45] }).to eq({range: {'age' => {gte: 42, lte: 45}, _cache: true}}) }
|
20
|
+
specify { expect(render { (age > 42) & ~(age <= 45) }).to eq({range: {'age' => {gt: 42, lte: 45}, _cache: true}}) }
|
21
|
+
specify { expect(render { (~age > 42) & (age <= 45) }).to eq({range: {'age' => {gt: 42, lte: 45}, _cache: true}}) }
|
22
22
|
|
23
|
-
specify { render { age(:i) > 42 }.
|
24
|
-
specify { render { age(:index) > 42 }.
|
25
|
-
specify { render { age(:f) > 42 }.
|
26
|
-
specify { render { age(:fielddata) > 42 }.
|
27
|
-
specify { render { (age(:f) > 42) & (age <= 45) }.
|
23
|
+
specify { expect(render { age(:i) > 42 }).to eq({range: {'age' => {gt: 42}, execution: :index}}) }
|
24
|
+
specify { expect(render { age(:index) > 42 }).to eq({range: {'age' => {gt: 42}, execution: :index}}) }
|
25
|
+
specify { expect(render { age(:f) > 42 }).to eq({range: {'age' => {gt: 42}, execution: :fielddata}}) }
|
26
|
+
specify { expect(render { age(:fielddata) > 42 }).to eq({range: {'age' => {gt: 42}, execution: :fielddata}}) }
|
27
|
+
specify { expect(render { (age(:f) > 42) & (age <= 45) }).to eq({range: {'age' => {gt: 42, lte: 45}, execution: :fielddata}}) }
|
28
28
|
|
29
|
-
specify { render { ~age(:f) > 42 }.
|
30
|
-
specify { render { (age(:f) > 42) & (~age <= 45) }.
|
29
|
+
specify { expect(render { ~age(:f) > 42 }).to eq({range: {'age' => {gt: 42}, execution: :fielddata, _cache: true}}) }
|
30
|
+
specify { expect(render { (age(:f) > 42) & (~age <= 45) }).to eq({range: {'age' => {gt: 42, lte: 45}, execution: :fielddata, _cache: true}}) }
|
31
31
|
end
|
32
32
|
end
|
@@ -6,6 +6,6 @@ describe Chewy::Query::Nodes::Raw do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { r(term: {name: 'name'}) }.
|
9
|
+
specify { expect(render { r(term: {name: 'name'}) }).to eq({term: {name: 'name'}}) }
|
10
10
|
end
|
11
11
|
end
|
@@ -6,26 +6,26 @@ describe Chewy::Query::Nodes::Regexp do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { names.first == /nam.*/ }.
|
10
|
-
specify { render { names.first =~ /nam.*/ }.
|
11
|
-
specify { render { name != /nam.*/ }.
|
12
|
-
specify { render { name !~ /nam.*/ }.
|
9
|
+
specify { expect(render { names.first == /nam.*/ }).to eq({regexp: {'names.first' => 'nam.*'}}) }
|
10
|
+
specify { expect(render { names.first =~ /nam.*/ }).to eq({regexp: {'names.first' => 'nam.*'}}) }
|
11
|
+
specify { expect(render { name != /nam.*/ }).to eq({not: {regexp: {'name' => 'nam.*'}}}) }
|
12
|
+
specify { expect(render { name !~ /nam.*/ }).to eq({not: {regexp: {'name' => 'nam.*'}}}) }
|
13
13
|
|
14
|
-
specify { render { names.first(flags: [:anystring, :intersection, :borogoves]) == /nam.*/ }
|
15
|
-
.
|
16
|
-
specify { render { names.first(:anystring, :intersection, :borogoves) == /nam.*/ }
|
17
|
-
.
|
14
|
+
specify { expect(render { names.first(flags: [:anystring, :intersection, :borogoves]) == /nam.*/ })
|
15
|
+
.to eq({regexp: {'names.first' => {value: 'nam.*', flags: 'ANYSTRING|INTERSECTION'}}}) }
|
16
|
+
specify { expect(render { names.first(:anystring, :intersection, :borogoves) == /nam.*/ })
|
17
|
+
.to eq({regexp: {'names.first' => {value: 'nam.*', flags: 'ANYSTRING|INTERSECTION'}}}) }
|
18
18
|
|
19
|
-
specify { render { names.first(flags: [:anystring, :intersection, :borogoves]) =~ /nam.*/ }
|
20
|
-
.
|
21
|
-
specify { render { names.first(:anystring, :intersection, :borogoves) =~ /nam.*/ }
|
22
|
-
.
|
19
|
+
specify { expect(render { names.first(flags: [:anystring, :intersection, :borogoves]) =~ /nam.*/ })
|
20
|
+
.to eq({regexp: {'names.first' => {value: 'nam.*', flags: 'ANYSTRING|INTERSECTION'}}}) }
|
21
|
+
specify { expect(render { names.first(:anystring, :intersection, :borogoves) =~ /nam.*/ })
|
22
|
+
.to eq({regexp: {'names.first' => {value: 'nam.*', flags: 'ANYSTRING|INTERSECTION'}}}) }
|
23
23
|
|
24
|
-
specify { render { ~names.first == /nam.*/ }.
|
25
|
-
specify { render { names.first(cache: 'name') == /nam.*/ }.
|
26
|
-
specify { render { ~names.first(:anystring) =~ /nam.*/ }
|
27
|
-
.
|
28
|
-
specify { render { names.first(:anystring, cache: 'name') =~ /nam.*/ }
|
29
|
-
.
|
24
|
+
specify { expect(render { ~names.first == /nam.*/ }).to eq({regexp: {'names.first' => 'nam.*', _cache: true, _cache_key: 'nam.*'}}) }
|
25
|
+
specify { expect(render { names.first(cache: 'name') == /nam.*/ }).to eq({regexp: {'names.first' => 'nam.*', _cache: true, _cache_key: 'name'}}) }
|
26
|
+
specify { expect(render { ~names.first(:anystring) =~ /nam.*/ })
|
27
|
+
.to eq({regexp: {'names.first' => {value: 'nam.*', flags: 'ANYSTRING'}, _cache: true, _cache_key: 'nam.*'}}) }
|
28
|
+
specify { expect(render { names.first(:anystring, cache: 'name') =~ /nam.*/ })
|
29
|
+
.to eq({regexp: {'names.first' => {value: 'nam.*', flags: 'ANYSTRING'}, _cache: true, _cache_key: 'name'}}) }
|
30
30
|
end
|
31
31
|
end
|
@@ -6,10 +6,10 @@ describe Chewy::Query::Nodes::Script do
|
|
6
6
|
Chewy::Query::Filters.new(&block).__render__
|
7
7
|
end
|
8
8
|
|
9
|
-
specify { render { s('var = val') }.
|
10
|
-
specify { render { s('var = val', val: 42) }.
|
9
|
+
specify { expect(render { s('var = val') }).to eq({script: {script: 'var = val'}}) }
|
10
|
+
specify { expect(render { s('var = val', val: 42) }).to eq({script: {script: 'var = val', params: {val: 42}}}) }
|
11
11
|
|
12
|
-
specify { render { ~s('var = val') }.
|
13
|
-
specify { render { ~s('var = val', val: 42) }.
|
12
|
+
specify { expect(render { ~s('var = val') }).to eq({script: {script: 'var = val', _cache: true}}) }
|
13
|
+
specify { expect(render { ~s('var = val', val: 42) }).to eq({script: {script: 'var = val', params: {val: 42}, _cache: true}}) }
|
14
14
|
end
|
15
15
|
end
|
@@ -1,55 +1,57 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
3
|
+
if defined?(::Kaminari)
|
4
|
+
describe Chewy::Query::Pagination::Kaminari do
|
5
|
+
before { Chewy.massacre }
|
6
|
+
|
7
|
+
before do
|
8
|
+
stub_index(:products) do
|
9
|
+
define_type(:product) do
|
10
|
+
field :name
|
11
|
+
field :age, type: 'integer'
|
12
|
+
end
|
11
13
|
end
|
12
14
|
end
|
13
|
-
end
|
14
15
|
|
15
|
-
|
16
|
+
let(:search) { ProductsIndex.order(:age) }
|
16
17
|
|
17
|
-
|
18
|
+
specify { expect(search.total_pages).to eq(0) }
|
18
19
|
|
19
|
-
|
20
|
-
|
20
|
+
context do
|
21
|
+
let(:data) { 10.times.map { |i| {id: i.next.to_s, name: "Name#{i.next}", age: 10 * i.next}.stringify_keys! } }
|
21
22
|
|
22
|
-
|
23
|
-
|
23
|
+
before { ProductsIndex::Product.import!(data.map { |h| double(h) }) }
|
24
|
+
before { allow(::Kaminari.config).to receive_messages(default_per_page: 3) }
|
24
25
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
describe '#per, #page' do
|
27
|
+
specify { expect(search.map { |e| e.attributes.except('_score', '_explanation') }).to match_array(data) }
|
28
|
+
specify { expect(search.page(1).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[0..2]) }
|
29
|
+
specify { expect(search.page(2).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[3..5]) }
|
30
|
+
specify { expect(search.page(2).per(4).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[4..7]) }
|
31
|
+
specify { expect(search.per(2).page(3).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[4..5]) }
|
32
|
+
specify { expect(search.per(5).page.map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[0..4]) }
|
33
|
+
specify { expect(search.page.per(4).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[0..3]) }
|
34
|
+
end
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
describe '#total_pages' do
|
37
|
+
specify { expect(search.total_pages).to eq(4) }
|
38
|
+
specify { expect(search.per(5).page(2).total_pages).to eq(2) }
|
39
|
+
specify { expect(search.per(2).page(3).total_pages).to eq(5) }
|
40
|
+
end
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
describe '#total_count' do
|
43
|
+
specify { expect(search.per(4).page(1).total_count).to eq(10) }
|
44
|
+
specify { expect(search.filter(numeric_range: {age: {gt: 20}}).limit(3).total_count).to eq(8) }
|
45
|
+
end
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
describe '#load' do
|
48
|
+
specify { expect(search.per(2).page(1).load.first.age).to eq(10) }
|
49
|
+
specify { expect(search.per(2).page(3).load.first.age).to eq(50) }
|
50
|
+
specify { expect(search.per(2).page(3).load.page(2).load.first.age).to eq(30) }
|
50
51
|
|
51
|
-
|
52
|
-
|
52
|
+
specify { expect(search.per(4).page(1).load.total_count).to eq(10) }
|
53
|
+
specify { expect(search.per(2).page(3).load.total_pages).to eq(5) }
|
54
|
+
end
|
53
55
|
end
|
54
56
|
end
|
55
57
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
if defined?(::WillPaginate)
|
5
|
+
describe Chewy::Query::Pagination::WillPaginate do
|
6
|
+
before { Chewy.massacre }
|
7
|
+
|
8
|
+
before do
|
9
|
+
stub_index(:products) do
|
10
|
+
define_type(:product) do
|
11
|
+
field :name
|
12
|
+
field :age, type: 'integer'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:search) { ProductsIndex.order(:age) }
|
18
|
+
|
19
|
+
specify { expect(search.total_pages).to eq(1) } #defaults to 1 on will_paginate
|
20
|
+
|
21
|
+
context do
|
22
|
+
let(:data) { 10.times.map { |i| {id: i.next.to_s, name: "Name#{i.next}", age: 10 * i.next}.stringify_keys! } }
|
23
|
+
|
24
|
+
before { ProductsIndex::Product.import!(data.map { |h| double(h) }) }
|
25
|
+
before { allow(::WillPaginate).to receive_messages(per_page: 3) }
|
26
|
+
|
27
|
+
describe '#page' do
|
28
|
+
specify { expect(search.map { |e| e.attributes.except('_score', '_explanation') }).to match_array(data) }
|
29
|
+
specify { expect(search.page(1).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[0..2]) }
|
30
|
+
specify { expect(search.page(2).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[3..5]) }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "#paginate" do
|
34
|
+
specify { expect(search.paginate(page: 2, per_page: 4).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[4..7]) }
|
35
|
+
specify { expect(search.paginate(per_page: 2, page: 3).page(3).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[4..5]) }
|
36
|
+
specify { expect(search.paginate(per_page: 5).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[0..4]) }
|
37
|
+
specify { expect(search.paginate(per_page: 4).map { |e| e.attributes.except('_score', '_explanation') }).to eq(data[0..3]) }
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#total_pages' do
|
41
|
+
specify { expect(search.paginate(page: 2, per_page: 5).total_pages).to eq(2) }
|
42
|
+
specify { expect(search.paginate(page: 3, per_page: 2).total_pages).to eq(5) }
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#total_entries' do
|
46
|
+
specify { expect(search.paginate(page: 1, per_page: 4).total_entries).to eq(10) }
|
47
|
+
specify { expect(search.filter(numeric_range: {age: {gt: 20}}).limit(3).total_entries).to eq(8) }
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#load' do
|
51
|
+
specify { expect(search.paginate(per_page: 2, page: 1).load.first.age).to eq(10) }
|
52
|
+
specify { expect(search.paginate(per_page: 2, page: 3).load.first.age).to eq(50) }
|
53
|
+
specify { expect(search.paginate(per_page: 2, page: 3).load.page(2).load.first.age).to eq(30) }
|
54
|
+
|
55
|
+
specify { expect(search.paginate(per_page:4, page:1).load.total_count).to eq(10) }
|
56
|
+
specify { expect(search.paginate(per_page:2, page:3).load.total_pages).to eq(5) }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Chewy::Query::Pagination do
|
4
|
-
before { Chewy.
|
4
|
+
before { Chewy.massacre }
|
5
5
|
|
6
6
|
before do
|
7
7
|
stub_index(:products) do
|
@@ -14,7 +14,7 @@ describe Chewy::Query::Pagination do
|
|
14
14
|
|
15
15
|
let(:search) { ProductsIndex.order(:age) }
|
16
16
|
|
17
|
-
specify { search.total_count.
|
17
|
+
specify { expect(search.total_count).to eq(0) }
|
18
18
|
|
19
19
|
context do
|
20
20
|
let(:data) { 10.times.map { |i| {id: i.next.to_s, name: "Name#{i.next}", age: 10 * i.next}.stringify_keys! } }
|
@@ -22,14 +22,15 @@ describe Chewy::Query::Pagination do
|
|
22
22
|
before { ProductsIndex::Product.import!(data.map { |h| double(h) }) }
|
23
23
|
|
24
24
|
describe '#total_count' do
|
25
|
-
specify { search.total_count.
|
26
|
-
specify { search.limit(5).total_count.
|
27
|
-
specify { search.filter(numeric_range: {age: {gt: 20}}).limit(3).total_count.
|
25
|
+
specify { expect(search.total_count).to eq(10) }
|
26
|
+
specify { expect(search.limit(5).total_count).to eq(10) }
|
27
|
+
specify { expect(search.filter(numeric_range: {age: {gt: 20}}).limit(3).total_count).to eq(8) }
|
28
28
|
end
|
29
29
|
|
30
30
|
describe '#load' do
|
31
|
-
specify { search.load.total_count.
|
32
|
-
specify { search.limit(5).load.total_count.
|
31
|
+
specify { expect(search.load.total_count).to eq(10) }
|
32
|
+
specify { expect(search.limit(5).load.total_count).to eq(10) }
|
33
33
|
end
|
34
34
|
end
|
35
|
+
|
35
36
|
end
|