trailblazer-finder 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +160 -11
  3. data/CHANGES.md +5 -0
  4. data/README.md +93 -22
  5. data/lib/trailblazer/finder.rb +3 -0
  6. data/lib/trailblazer/finder/adapters/active_record.rb +4 -0
  7. data/lib/trailblazer/finder/adapters/active_record/predicates.rb +42 -0
  8. data/lib/trailblazer/finder/adapters/friendly_id.rb +22 -24
  9. data/lib/trailblazer/finder/adapters/sequel.rb +5 -0
  10. data/lib/trailblazer/finder/adapters/sequel/predicates.rb +43 -0
  11. data/lib/trailblazer/finder/base.rb +3 -3
  12. data/lib/trailblazer/finder/features.rb +1 -0
  13. data/lib/trailblazer/finder/features/predicate.rb +37 -0
  14. data/lib/trailblazer/finder/filter.rb +2 -2
  15. data/lib/trailblazer/finder/predicates.rb +39 -0
  16. data/lib/trailblazer/finder/utils/deep_locate.rb +45 -0
  17. data/lib/trailblazer/finder/utils/extra.rb +1 -1
  18. data/lib/trailblazer/finder/utils/splitter.rb +42 -0
  19. data/lib/trailblazer/finder/version.rb +1 -1
  20. data/spec/spec_helper_sequel.rb +1 -0
  21. data/spec/trailblazer/finder/adapters/active_record/base_spec.rb +1 -1
  22. data/spec/trailblazer/finder/adapters/active_record/predicates_spec.rb +98 -0
  23. data/spec/trailblazer/finder/adapters/active_record/sorting_spec.rb +4 -0
  24. data/spec/trailblazer/finder/adapters/data_mapper/base_spec.rb +1 -1
  25. data/spec/trailblazer/finder/adapters/sequel/base_spec.rb +1 -1
  26. data/spec/trailblazer/finder/adapters/sequel/predicates_spec.rb +89 -0
  27. data/spec/trailblazer/finder/adapters/sequel/sorting_spec.rb +4 -0
  28. data/spec/trailblazer/finder/features/paging_spec.rb +1 -1
  29. data/spec/trailblazer/finder/features/predicates_spec.rb +99 -0
  30. data/spec/trailblazer/finder/features/sorting_spec.rb +3 -4
  31. data/spec/trailblazer/operation/predicates_spec.rb +127 -0
  32. data/spec/trailblazer/test_spec.rb +41 -0
  33. data/trailblazer-finder.gemspec +0 -2
  34. metadata +17 -15
@@ -31,6 +31,10 @@ module Trailblazer
31
31
  end
32
32
 
33
33
  describe 'sorting' do
34
+ before do
35
+ Product.delete_all
36
+ end
37
+
34
38
  after do
35
39
  Product.delete_all
36
40
  end
@@ -16,7 +16,7 @@ module Trailblazer
16
16
  end
17
17
  end
18
18
 
19
- def finder_class(&block) # rubocop:disable Metrics/MethodLength
19
+ def finder_class(&block)
20
20
  define_finder_class do
21
21
  adapters DataMapper
22
22
 
@@ -16,7 +16,7 @@ module Trailblazer
16
16
  end
17
17
  end
18
18
 
19
- def finder_class(&block) # rubocop:disable Metrics/MethodLength
19
+ def finder_class(&block)
20
20
  define_finder_class do
21
21
  adapters ActiveRecord
22
22
 
@@ -0,0 +1,89 @@
1
+ require 'spec_helper_sequel'
2
+ # require 'spec_helper'
3
+
4
+ describe "Trailblazer::Finder::Adapters::Sequel::Predicates" do
5
+ class TestFinder < Trailblazer::Finder
6
+ features Predicate
7
+ adapters Sequel
8
+
9
+ entity_type { SProduct }
10
+
11
+ predicates_for :name, :price, :created_at
12
+
13
+ filter_by(:category) { |entity_type, _| entity_type.joins(:category) }
14
+ end
15
+
16
+ def finder_with_predicate(filter = nil, value = nil, filters = {})
17
+ TestFinder.new filter: { filter => value }.merge(filters)
18
+ end
19
+
20
+ describe 'equals' do
21
+ before do
22
+ SProduct.order(:id).delete
23
+ 10.times do |i|
24
+ next SProduct.create name: "", price: "1#{i}" if i == 7
25
+ next SProduct.create name: nil, price: "1#{i}" if i == 8
26
+ next SProduct.create name: "product_4", price: "1#{i}" if i == 9
27
+ SProduct.create name: "product_#{i}", price: "1#{i}"
28
+ end
29
+ end
30
+
31
+ it 'it finds single row with name equal to product_5' do
32
+ finder = finder_with_predicate 'name_eq', 'product_5'
33
+ expect(finder.results.all.map(&:price)).to eq [15]
34
+ end
35
+
36
+ it 'it finds multiple rows with name equal to product_4' do
37
+ finder = finder_with_predicate 'name_eq', 'product_4'
38
+ expect(finder.results.all.map(&:price)).to eq [14, 19]
39
+ end
40
+
41
+ it 'it finds rows with name not equal to product_4' do
42
+ finder = finder_with_predicate 'name_not_eq', 'product_4'
43
+ expect(finder.results.all.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_5", "product_6", ""]
44
+ expect(finder.results.all.map(&:price)).to eq [10, 11, 12, 13, 15, 16, 17]
45
+ end
46
+
47
+ it 'it finds multiple rows with name blank (empty/nil)' do
48
+ finder = finder_with_predicate 'name_blank', ''
49
+ expect(finder.results.all.map(&:price)).to eq [17, 18]
50
+ end
51
+
52
+ it 'it finds multiple rows with name not blank (empty/nil)' do
53
+ finder = finder_with_predicate 'name_not_blank', ''
54
+ expect(finder.results.all.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_4", "product_5", "product_6", "product_4"]
55
+ end
56
+
57
+ it 'it finds multiple rows with price less than 15' do
58
+ finder = finder_with_predicate 'price_lt', 15
59
+ expect(finder.results.all.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_4"]
60
+ expect(finder.results.all.map(&:price)).to eq [10, 11, 12, 13, 14]
61
+ end
62
+
63
+ it 'it finds multiple rows with price equal to and less than 15' do
64
+ finder = finder_with_predicate 'price_lte', 15
65
+ expect(finder.results.all.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_4", "product_5"]
66
+ expect(finder.results.all.map(&:price)).to eq [10, 11, 12, 13, 14, 15]
67
+ end
68
+
69
+ it 'it finds multiple rows with price greater than 15' do
70
+ finder = finder_with_predicate 'price_gt', 15
71
+ expect(finder.results.all.map(&:name)).to eq ["product_6", "", nil, "product_4"]
72
+ expect(finder.results.all.map(&:price)).to eq [16, 17, 18, 19]
73
+ end
74
+
75
+ it 'it finds multiple rows with price equal to and greater than 15' do
76
+ finder = finder_with_predicate 'price_gte', 15
77
+ expect(finder.results.all.map(&:name)).to eq ["product_5", "product_6", "", nil, "product_4"]
78
+ expect(finder.results.all.map(&:price)).to eq [15, 16, 17, 18, 19]
79
+ end
80
+
81
+ it 'it finds rows with name not equal to product_4 and name not blank and price greater than 14' do
82
+ params = { name_not_blank: true, price_gt: 14 }
83
+ finder = finder_with_predicate 'name_not_eq', 'product_4', params
84
+
85
+ expect(finder.results.map(&:name)).to eq ["product_5", "product_6"]
86
+ expect(finder.results.map(&:price)).to eq [15, 16]
87
+ end
88
+ end
89
+ end
@@ -31,6 +31,10 @@ module Trailblazer
31
31
  end
32
32
 
33
33
  describe 'sorting' do
34
+ before do
35
+ SProduct.order(:id).delete
36
+ end
37
+
34
38
  after do
35
39
  SProduct.order(:id).delete
36
40
  end
@@ -20,7 +20,7 @@ module Trailblazer
20
20
  end
21
21
  end
22
22
 
23
- def finder_class # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
23
+ def finder_class
24
24
  define_finder_class do
25
25
  entity_type do
26
26
  [
@@ -0,0 +1,99 @@
1
+ # require 'spec_helper_sequel'
2
+ require 'spec_helper'
3
+
4
+ module Trailblazer
5
+ class Finder
6
+ module Features
7
+ describe Predicate do
8
+ class TestFinder < Trailblazer::Finder
9
+ features Predicate
10
+
11
+ def create_product(id, name, price)
12
+ {
13
+ id: id,
14
+ name: name,
15
+ price: price,
16
+ created_at: Time.now,
17
+ updated_at: Time.now
18
+ }
19
+ end
20
+
21
+ entity_type do
22
+ Array.new(10) do |i|
23
+ next create_product(i+1, "", "1#{i}".to_i)if i == 7
24
+ next create_product(i+1, nil, "1#{i}".to_i) if i == 8
25
+ next create_product(i+1, "product_4", "1#{i}".to_i) if i == 9
26
+ create_product(i+1, "product_#{i}", "1#{i}".to_i)
27
+ end
28
+ end
29
+
30
+ predicates_for :name, :price, :created_at
31
+ end
32
+
33
+ def finder_with_predicate(filter = nil, value = nil, filters = {})
34
+ TestFinder.new filter: { filter => value }.merge(filters)
35
+ end
36
+
37
+ describe 'eqauls' do
38
+ it 'it finds single row with name equal to product_5' do
39
+ finder = finder_with_predicate 'name_eq', 'product_5'
40
+ expect(finder.results.map { |n| n[:price] }).to eq [15]
41
+ end
42
+
43
+ it 'it finds multiple rows with name equal to product_4' do
44
+ finder = finder_with_predicate 'name_eq', 'product_4'
45
+ expect(finder.results.map { |n| n[:price] }).to eq [14, 19]
46
+ end
47
+
48
+ it 'it finds rows with name not equal to product_4' do
49
+ finder = finder_with_predicate 'name_not_eq', 'product_4'
50
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_0", "product_1", "product_2", "product_3", "product_5", "product_6", ""]
51
+ expect(finder.results.map { |n| n[:price] }).to eq [10, 11, 12, 13, 15, 16, 17]
52
+ end
53
+
54
+ it 'it finds multiple rows with name blank (empty/nil)' do
55
+ finder = finder_with_predicate 'name_blank', ''
56
+ expect(finder.results.map { |n| n[:price] }).to eq [17, 18]
57
+ end
58
+
59
+ it 'it finds multiple rows with name not blank (empty/nil)' do
60
+ finder = finder_with_predicate 'name_not_blank', ''
61
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_0", "product_1", "product_2", "product_3", "product_4", "product_5", "product_6", "product_4"]
62
+ end
63
+
64
+ it 'it finds multiple rows with price less than 15' do
65
+ finder = finder_with_predicate 'price_lt', 15
66
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_0", "product_1", "product_2", "product_3", "product_4"]
67
+ expect(finder.results.map { |n| n[:price] }).to eq [10, 11, 12, 13, 14]
68
+ end
69
+
70
+ it 'it finds multiple rows with price equal to and less than 15' do
71
+ finder = finder_with_predicate 'price_lte', 15
72
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_0", "product_1", "product_2", "product_3", "product_4", "product_5"]
73
+ expect(finder.results.map { |n| n[:price] }).to eq [10, 11, 12, 13, 14, 15]
74
+ end
75
+
76
+ it 'it finds multiple rows with price greater than 15' do
77
+ finder = finder_with_predicate 'price_gt', 15
78
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_6", "", nil, "product_4"]
79
+ expect(finder.results.map { |n| n[:price] }).to eq [16, 17, 18, 19]
80
+ end
81
+
82
+ it 'it finds multiple rows with price equal to and greater than 15' do
83
+ finder = finder_with_predicate 'price_gte', 15
84
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_5", "product_6", "", nil, "product_4"]
85
+ expect(finder.results.map { |n| n[:price] }).to eq [15, 16, 17, 18, 19]
86
+ end
87
+
88
+ it 'it finds rows with name not equal to product_4 and name not blank and price greater than 14' do
89
+ params = { name_not_blank: true, price_gt: 14 }
90
+ finder = finder_with_predicate 'name_not_eq', 'product_4', params
91
+
92
+ expect(finder.results.map { |n| n[:name] }).to eq ["product_5", "product_6"]
93
+ expect(finder.results.map { |n| n[:price] }).to eq [15, 16]
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -9,10 +9,9 @@ module Trailblazer
9
9
  true
10
10
  end
11
11
 
12
- def finder_class # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
13
- Class.new do
14
- include Trailblazer::Finder::Base
15
- include Trailblazer::Finder::Features::Sorting
12
+ def finder_class
13
+ Class.new(Trailblazer::Finder) do
14
+ features Sorting
16
15
 
17
16
  entity_type do
18
17
  [
@@ -0,0 +1,127 @@
1
+ require 'delegate'
2
+ require 'trailblazer'
3
+ require 'spec_helper_active_record'
4
+
5
+ class Product::PredicateFinderNoEntity < Trailblazer::Finder
6
+ features Predicate
7
+ adapters ActiveRecord
8
+
9
+ predicates_for :name, :price, :created_at
10
+
11
+ filter_by(:category) { |entity_type, _| entity_type.joins(:category) }
12
+ end
13
+
14
+ class Product::PredicateFinderWithEntity < Trailblazer::Finder
15
+ features Predicate
16
+ adapters ActiveRecord
17
+
18
+ entity_type { Product }
19
+
20
+ predicates_for :name, :price, :created_at
21
+
22
+ filter_by(:category) { |entity_type, _| entity_type.joins(:category) }
23
+ end
24
+
25
+ class Product::PredicateIndex < Trailblazer::Operation
26
+ step Finder(Product::PredicateFinderNoEntity, :all, Product)
27
+ end
28
+
29
+ class Product::PredicateIndexNoEntity < Trailblazer::Operation
30
+ step Finder(Product::PredicateFinderWithEntity, :all)
31
+ end
32
+
33
+ describe 'Trailblazer::Operation - Finder Macro - Sorting' do
34
+ before do
35
+ Product.destroy_all
36
+ Product.reset_pk_sequence
37
+ Product.delete_all
38
+ 10.times do |i|
39
+ next Product.create name: "", price: "1#{i}" if i == 7
40
+ next Product.create name: nil, price: "1#{i}" if i == 8
41
+ next Product.create name: "product_4", price: "1#{i}" if i == 9
42
+ Product.create name: "product_#{i}", price: "1#{i}"
43
+ end
44
+ end
45
+
46
+ after do
47
+ Product.destroy_all
48
+ Product.reset_pk_sequence
49
+ end
50
+
51
+ it 'it finds single row with name equal to product_5' do
52
+ params = { f: { name_eq: 'product_5' } }
53
+ result = Product::PredicateIndex.call(params: params)
54
+
55
+ expect(result[:finder].results.first.name).to eq "product_5"
56
+ end
57
+
58
+ it 'it finds multiple rows with name equal to product_4' do
59
+ params = { f: { name_eq: 'product_4' } }
60
+ result = Product::PredicateIndex.call(params: params)
61
+
62
+ expect(result[:finder].results.first.price).to eq 14
63
+ expect(result[:finder].results.last.price).to eq 19
64
+ end
65
+
66
+ it 'it finds rows with name not equal to product_4' do
67
+ params = { f: { name_not_eq: 'product_4' } }
68
+ result = Product::PredicateIndex.call(params: params)
69
+
70
+ expect(result[:finder].results.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_5", "product_6", ""]
71
+ expect(result[:finder].results.map(&:price)).to eq [10, 11, 12, 13, 15, 16, 17]
72
+ end
73
+
74
+ it 'it finds multiple rows with name blank (empty/nil)' do
75
+ params = { f: { name_blank: true } }
76
+ result = Product::PredicateIndex.call(params: params)
77
+
78
+ expect(result[:finder].results.map(&:price)).to eq [17, 18]
79
+ end
80
+
81
+ it 'it finds multiple rows with name not blank (empty/nil)' do
82
+ params = { f: { name_not_blank: true } }
83
+ result = Product::PredicateIndex.call(params: params)
84
+
85
+ expect(result[:finder].results.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_4", "product_5", "product_6", "product_4"]
86
+ end
87
+
88
+ it 'it finds multiple rows with price less than 15' do
89
+ params = { f: { price_lt: 15 } }
90
+ result = Product::PredicateIndex.call(params: params)
91
+
92
+ expect(result[:finder].results.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_4"]
93
+ expect(result[:finder].results.map(&:price)).to eq [10, 11, 12, 13, 14]
94
+ end
95
+
96
+ it 'it finds multiple rows with price equal to and less than 15' do
97
+ params = { f: { price_lte: 15 } }
98
+ result = Product::PredicateIndex.call(params: params)
99
+
100
+ expect(result[:finder].results.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_4", "product_5"]
101
+ expect(result[:finder].results.map(&:price)).to eq [10, 11, 12, 13, 14, 15]
102
+ end
103
+
104
+ it 'it finds multiple rows with price greater than 15' do
105
+ params = { f: { price_gt: 15 } }
106
+ result = Product::PredicateIndex.call(params: params)
107
+
108
+ expect(result[:finder].results.map(&:name)).to eq ["product_6", "", nil, "product_4"]
109
+ expect(result[:finder].results.map(&:price)).to eq [16, 17, 18, 19]
110
+ end
111
+
112
+ it 'it finds multiple rows with price equal to and greater than 15' do
113
+ params = { f: { price_gte: 15 } }
114
+ result = Product::PredicateIndex.call(params: params)
115
+
116
+ expect(result[:finder].results.map(&:name)).to eq ["product_5", "product_6", "", nil, "product_4"]
117
+ expect(result[:finder].results.map(&:price)).to eq [15, 16, 17, 18, 19]
118
+ end
119
+
120
+ it 'it finds rows with name not equal to product_4 and name not blank and price greater than 14' do
121
+ params = { f: { name_not_eq: 'product_4', name_not_blank: true, price_gt: 14 } }
122
+ result = Product::PredicateIndex.call(params: params)
123
+
124
+ expect(result[:finder].results.map(&:name)).to eq ["product_5", "product_6"]
125
+ expect(result[:finder].results.map(&:price)).to eq [15, 16]
126
+ end
127
+ end
@@ -0,0 +1,41 @@
1
+ # require 'spec_helper_active_record'
2
+ #
3
+ # class TestFinder < Trailblazer::Finder
4
+ # features Predicates
5
+ # adapters ActiveRecord, FriendlyId
6
+ #
7
+ # entity_type { Product }
8
+ #
9
+ # predicates_for :name, :price, :created_at
10
+ #
11
+ # filter_by(:category) { |entity_type, _| entity_type.joins(:category) }
12
+ # end
13
+ #
14
+ # def finder_with_predicate(filter = nil, value = nil, filters = {})
15
+ # TestFinder.new filter: { filter => value }.merge(filters)
16
+ # end
17
+ #
18
+ # describe 'eqauls' do
19
+ # before do
20
+ # Product.delete_all
21
+ # 10.times do |i|
22
+ # Product.create name: "product_#{i}", price: "1#{i}"
23
+ # Product.create name: "product_4", price: "1#{1}" if i == 5
24
+ # end
25
+ # end
26
+ #
27
+ # it 'it finds single row with name equal to product_5' do
28
+ # finder = finder_with_predicate 'name_eq', 'product_5'
29
+ # expect(finder.results.map(&:price)).to eq [15]
30
+ # end
31
+ #
32
+ # it 'it finds multiple rows with name equal to product_4' do
33
+ # finder = finder_with_predicate 'name_eq', 'product_4'
34
+ # expect(finder.results.map(&:price)).to eq [14, 11]
35
+ # end
36
+ #
37
+ # it 'it finds rows with name not equal to product_5' do
38
+ # finder = finder_with_predicate 'name_not_eq', 'product_4'
39
+ # expect(finder.results.map(&:name)).to eq ["product_0", "product_1", "product_2", "product_3", "product_5", "product_6", "product_7", "product_8", "product_9"]
40
+ # end
41
+ # end
@@ -17,8 +17,6 @@ Gem::Specification.new do |spec|
17
17
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_dependency 'hashie', '~> 3.5'
21
-
22
20
  spec.add_development_dependency 'bundler'
23
21
  spec.add_development_dependency 'rake'
24
22
  spec.add_development_dependency 'sequel'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trailblazer-finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
@@ -11,20 +11,6 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2018-03-12 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: hashie
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: '3.5'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: '3.5'
28
14
  - !ruby/object:Gem::Dependency
29
15
  name: bundler
30
16
  requirement: !ruby/object:Gem::Requirement
@@ -284,6 +270,7 @@ files:
284
270
  - lib/trailblazer/finder/adapters.rb
285
271
  - lib/trailblazer/finder/adapters/active_record.rb
286
272
  - lib/trailblazer/finder/adapters/active_record/paging.rb
273
+ - lib/trailblazer/finder/adapters/active_record/predicates.rb
287
274
  - lib/trailblazer/finder/adapters/active_record/sorting.rb
288
275
  - lib/trailblazer/finder/adapters/data_mapper.rb
289
276
  - lib/trailblazer/finder/adapters/data_mapper/paging.rb
@@ -292,6 +279,7 @@ files:
292
279
  - lib/trailblazer/finder/adapters/kaminari.rb
293
280
  - lib/trailblazer/finder/adapters/sequel.rb
294
281
  - lib/trailblazer/finder/adapters/sequel/paging.rb
282
+ - lib/trailblazer/finder/adapters/sequel/predicates.rb
295
283
  - lib/trailblazer/finder/adapters/sequel/sorting.rb
296
284
  - lib/trailblazer/finder/adapters/will_paginate.rb
297
285
  - lib/trailblazer/finder/base.rb
@@ -302,12 +290,16 @@ files:
302
290
  - lib/trailblazer/finder/errors/with_ignored.rb
303
291
  - lib/trailblazer/finder/features.rb
304
292
  - lib/trailblazer/finder/features/paging.rb
293
+ - lib/trailblazer/finder/features/predicate.rb
305
294
  - lib/trailblazer/finder/features/sorting.rb
306
295
  - lib/trailblazer/finder/filter.rb
307
296
  - lib/trailblazer/finder/find.rb
297
+ - lib/trailblazer/finder/predicates.rb
298
+ - lib/trailblazer/finder/utils/deep_locate.rb
308
299
  - lib/trailblazer/finder/utils/extra.rb
309
300
  - lib/trailblazer/finder/utils/params.rb
310
301
  - lib/trailblazer/finder/utils/parse.rb
302
+ - lib/trailblazer/finder/utils/splitter.rb
311
303
  - lib/trailblazer/finder/utils/string.rb
312
304
  - lib/trailblazer/finder/version.rb
313
305
  - lib/trailblazer/operation/finder.rb
@@ -319,6 +311,7 @@ files:
319
311
  - spec/support/sorting_shared_example.rb
320
312
  - spec/trailblazer/finder/adapters/active_record/base_spec.rb
321
313
  - spec/trailblazer/finder/adapters/active_record/paging_spec.rb
314
+ - spec/trailblazer/finder/adapters/active_record/predicates_spec.rb
322
315
  - spec/trailblazer/finder/adapters/active_record/sorting_spec.rb
323
316
  - spec/trailblazer/finder/adapters/data_mapper/base_spec.rb
324
317
  - spec/trailblazer/finder/adapters/data_mapper/paging_spec.rb
@@ -327,11 +320,13 @@ files:
327
320
  - spec/trailblazer/finder/adapters/kaminari_spec.rb
328
321
  - spec/trailblazer/finder/adapters/sequel/base_spec.rb
329
322
  - spec/trailblazer/finder/adapters/sequel/paging_spec.rb
323
+ - spec/trailblazer/finder/adapters/sequel/predicates_spec.rb
330
324
  - spec/trailblazer/finder/adapters/sequel/sorting_spec.rb
331
325
  - spec/trailblazer/finder/adapters/will_paginate_spec.rb
332
326
  - spec/trailblazer/finder/adapters_spec.rb
333
327
  - spec/trailblazer/finder/base_spec.rb
334
328
  - spec/trailblazer/finder/features/paging_spec.rb
329
+ - spec/trailblazer/finder/features/predicates_spec.rb
335
330
  - spec/trailblazer/finder/features/sorting_spec.rb
336
331
  - spec/trailblazer/finder/features_spec.rb
337
332
  - spec/trailblazer/finder/filter_spec.rb
@@ -342,7 +337,9 @@ files:
342
337
  - spec/trailblazer/finder/utils/string_spec.rb
343
338
  - spec/trailblazer/operation/finder_spec.rb
344
339
  - spec/trailblazer/operation/paging_spec.rb
340
+ - spec/trailblazer/operation/predicates_spec.rb
345
341
  - spec/trailblazer/operation/sorting_spec.rb
342
+ - spec/trailblazer/test_spec.rb
346
343
  - trailblazer-finder.gemspec
347
344
  homepage: http://trailblazer.to
348
345
  licenses:
@@ -377,6 +374,7 @@ test_files:
377
374
  - spec/support/sorting_shared_example.rb
378
375
  - spec/trailblazer/finder/adapters/active_record/base_spec.rb
379
376
  - spec/trailblazer/finder/adapters/active_record/paging_spec.rb
377
+ - spec/trailblazer/finder/adapters/active_record/predicates_spec.rb
380
378
  - spec/trailblazer/finder/adapters/active_record/sorting_spec.rb
381
379
  - spec/trailblazer/finder/adapters/data_mapper/base_spec.rb
382
380
  - spec/trailblazer/finder/adapters/data_mapper/paging_spec.rb
@@ -385,11 +383,13 @@ test_files:
385
383
  - spec/trailblazer/finder/adapters/kaminari_spec.rb
386
384
  - spec/trailblazer/finder/adapters/sequel/base_spec.rb
387
385
  - spec/trailblazer/finder/adapters/sequel/paging_spec.rb
386
+ - spec/trailblazer/finder/adapters/sequel/predicates_spec.rb
388
387
  - spec/trailblazer/finder/adapters/sequel/sorting_spec.rb
389
388
  - spec/trailblazer/finder/adapters/will_paginate_spec.rb
390
389
  - spec/trailblazer/finder/adapters_spec.rb
391
390
  - spec/trailblazer/finder/base_spec.rb
392
391
  - spec/trailblazer/finder/features/paging_spec.rb
392
+ - spec/trailblazer/finder/features/predicates_spec.rb
393
393
  - spec/trailblazer/finder/features/sorting_spec.rb
394
394
  - spec/trailblazer/finder/features_spec.rb
395
395
  - spec/trailblazer/finder/filter_spec.rb
@@ -400,4 +400,6 @@ test_files:
400
400
  - spec/trailblazer/finder/utils/string_spec.rb
401
401
  - spec/trailblazer/operation/finder_spec.rb
402
402
  - spec/trailblazer/operation/paging_spec.rb
403
+ - spec/trailblazer/operation/predicates_spec.rb
403
404
  - spec/trailblazer/operation/sorting_spec.rb
405
+ - spec/trailblazer/test_spec.rb