apill 3.0.0 → 3.0.1
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/lib/apill/parameters/filter.rb +17 -7
- data/lib/apill/parameters/index.rb +5 -1
- data/lib/apill/parameters/page.rb +6 -1
- data/lib/apill/parameters/sort.rb +5 -1
- data/lib/apill/resource/processors/indexing.rb +2 -3
- data/lib/apill/resource/processors/paging.rb +2 -0
- data/lib/apill/resource/processors/sorting.rb +2 -0
- data/lib/apill/version.rb +1 -1
- data/spec/apill/resource/processors/indexing_spec.rb +7 -0
- data/spec/apill/resource/processors/paging_spec.rb +21 -2
- data/spec/apill/resource/processors/sorting_spec.rb +6 -15
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 29f4ac346214c2037d109175b797ef0af4c78ca7
|
|
4
|
+
data.tar.gz: 433f57a538f9d55bd4503115eb01ccb621157a3f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0d2b742bd8b2ce19ddb52b2efb4e740d42196f2243447b70b775741013e1d74287399a592b402de96020b7bf644e71f0c1f53983abf1c9e1757172d2432e37bf
|
|
7
|
+
data.tar.gz: e65b063cb1653c9be04b248bbc2de33d63931441d44db7f5418a147a3b0972ae15d78c2e2a005d8593343ad030247d217fadb31c14e06b857560211d4dd4903a
|
|
@@ -4,20 +4,30 @@ class Filter
|
|
|
4
4
|
attr_accessor :raw_parameters
|
|
5
5
|
|
|
6
6
|
def initialize(raw_parameters)
|
|
7
|
-
self.raw_parameters = raw_parameters
|
|
7
|
+
self.raw_parameters = raw_parameters || {}
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
raw_parameter[1] == '' ||
|
|
14
|
-
raw_parameter[1].nil?
|
|
10
|
+
def present?
|
|
11
|
+
compacted_parameters.any?
|
|
12
|
+
end
|
|
15
13
|
|
|
16
|
-
|
|
14
|
+
def each_with_object(memoized)
|
|
15
|
+
compacted_parameters.each do |name, value|
|
|
16
|
+
memoized = yield name, value, memoized
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
memoized
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def compacted_parameters
|
|
25
|
+
@compacted_parameters ||= raw_parameters.reject do |name, value|
|
|
26
|
+
name == 'query' ||
|
|
27
|
+
value == '' ||
|
|
28
|
+
value.nil?
|
|
29
|
+
end
|
|
30
|
+
end
|
|
21
31
|
end
|
|
22
32
|
end
|
|
23
33
|
end
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
module Apill
|
|
2
2
|
class Parameters
|
|
3
3
|
class Page
|
|
4
|
+
PAGING_PARAMETERS = %w{number size limit offset cursor}
|
|
4
5
|
DEFAULT_STARTING_PAGE = 1
|
|
5
6
|
DEFAULT_PAGE_SIZE = 25
|
|
6
7
|
|
|
7
8
|
attr_accessor :raw_parameters
|
|
8
9
|
|
|
9
10
|
def initialize(raw_parameters)
|
|
10
|
-
self.raw_parameters = raw_parameters
|
|
11
|
+
self.raw_parameters = raw_parameters || {}
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def present?
|
|
15
|
+
(raw_parameters.keys & PAGING_PARAMETERS).any?
|
|
11
16
|
end
|
|
12
17
|
|
|
13
18
|
def page_number
|
|
@@ -6,7 +6,11 @@ class Sort
|
|
|
6
6
|
attr_accessor :raw_parameters
|
|
7
7
|
|
|
8
8
|
def initialize(raw_parameters)
|
|
9
|
-
self.raw_parameters = raw_parameters ? raw_parameters.split(',') : [
|
|
9
|
+
self.raw_parameters = raw_parameters ? raw_parameters.split(',') : []
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def present?
|
|
13
|
+
raw_parameters.any?
|
|
10
14
|
end
|
|
11
15
|
|
|
12
16
|
def to_h
|
|
@@ -7,7 +7,7 @@ class Indexing
|
|
|
7
7
|
attr_accessor :resource,
|
|
8
8
|
:parameters
|
|
9
9
|
|
|
10
|
-
def initialize(resource, parameters)
|
|
10
|
+
def initialize(resource, parameters = {})
|
|
11
11
|
self.resource = resource
|
|
12
12
|
self.parameters = Parameters::Index.new(parameters['filter'] || {})
|
|
13
13
|
end
|
|
@@ -21,8 +21,7 @@ class Indexing
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def processed
|
|
24
|
-
return resource unless
|
|
25
|
-
parameters.query
|
|
24
|
+
return resource unless parameters.present?
|
|
26
25
|
|
|
27
26
|
resource.for_query(parameters.query)
|
|
28
27
|
end
|
data/lib/apill/version.rb
CHANGED
|
@@ -5,6 +5,13 @@ module Apill
|
|
|
5
5
|
module Resource
|
|
6
6
|
module Processors
|
|
7
7
|
describe Indexing do
|
|
8
|
+
let(:indexing_resource) { double }
|
|
9
|
+
|
|
10
|
+
it 'does not do anything if indexing params are not passed in' do
|
|
11
|
+
indexing = Indexing.new(indexing_resource)
|
|
12
|
+
|
|
13
|
+
expect(indexing.processed).to eql indexing_resource
|
|
14
|
+
end
|
|
8
15
|
end
|
|
9
16
|
end
|
|
10
17
|
end
|
|
@@ -9,7 +9,10 @@ describe Paging do
|
|
|
9
9
|
let(:processed_resource) { double }
|
|
10
10
|
|
|
11
11
|
it 'can return a default page' do
|
|
12
|
-
paging = Paging.new(paging_resource
|
|
12
|
+
paging = Paging.new(paging_resource,
|
|
13
|
+
'page' => {
|
|
14
|
+
'size' => 10,
|
|
15
|
+
})
|
|
13
16
|
|
|
14
17
|
allow(processed_resource).to receive(:total_pages).and_return 10
|
|
15
18
|
allow(processed_resource).to receive(:current_page).and_return 1
|
|
@@ -20,7 +23,7 @@ describe Paging do
|
|
|
20
23
|
with(1).
|
|
21
24
|
and_return paging_resource
|
|
22
25
|
allow(paging_resource).to receive(:per).
|
|
23
|
-
with(
|
|
26
|
+
with(10).
|
|
24
27
|
and_return processed_resource
|
|
25
28
|
|
|
26
29
|
expect(paging.processed).to eql processed_resource
|
|
@@ -48,6 +51,22 @@ describe Paging do
|
|
|
48
51
|
|
|
49
52
|
expect(paging.processed).to eql processed_resource
|
|
50
53
|
end
|
|
54
|
+
|
|
55
|
+
it 'does not consider non-ideomatic page params as valid' do
|
|
56
|
+
paging = Paging.new(paging_resource,
|
|
57
|
+
'page' => {
|
|
58
|
+
'nombre' => 5,
|
|
59
|
+
'tamano' => 10,
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
expect(paging.processed).to eql paging_resource
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'does not do anything if page params are not passed in' do
|
|
66
|
+
paging = Paging.new(paging_resource)
|
|
67
|
+
|
|
68
|
+
expect(paging.processed).to eql paging_resource
|
|
69
|
+
end
|
|
51
70
|
end
|
|
52
71
|
end
|
|
53
72
|
end
|
|
@@ -7,21 +7,6 @@ module Processors
|
|
|
7
7
|
describe Sorting do
|
|
8
8
|
let(:sorting_resource) { double }
|
|
9
9
|
|
|
10
|
-
it 'can return a default sort' do
|
|
11
|
-
sorting = Sorting.new(sorting_resource)
|
|
12
|
-
|
|
13
|
-
allow(sorting_resource).to receive(:order).
|
|
14
|
-
with('created_at' => 'desc').
|
|
15
|
-
and_return('sorted')
|
|
16
|
-
|
|
17
|
-
expect(sorting.processed).to eql 'sorted'
|
|
18
|
-
expect(sorting.meta).to eql(
|
|
19
|
-
'sort' => {
|
|
20
|
-
'created_at' => 'desc',
|
|
21
|
-
},
|
|
22
|
-
)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
10
|
it 'can return an ascending sort' do
|
|
26
11
|
sorting = Sorting.new(sorting_resource, 'sort' => 'my_attribute')
|
|
27
12
|
|
|
@@ -68,6 +53,12 @@ describe Sorting do
|
|
|
68
53
|
},
|
|
69
54
|
)
|
|
70
55
|
end
|
|
56
|
+
|
|
57
|
+
it 'does not do anything if sorting params are not passed in' do
|
|
58
|
+
sorting = Sorting.new(sorting_resource)
|
|
59
|
+
|
|
60
|
+
expect(sorting.processed).to eql sorting_resource
|
|
61
|
+
end
|
|
71
62
|
end
|
|
72
63
|
end
|
|
73
64
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: apill
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- jfelchner
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-08-
|
|
11
|
+
date: 2015-08-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: human_error
|