apill 3.0.0 → 3.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|