trailblazer-finder 0.1.1 → 0.1.2

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.
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