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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c68aa89f529dc07063d53a0f2e53e210b606c1bb
4
- data.tar.gz: 6fc4b20a268b92b45d8e2e3f0b6ae195b118827d
3
+ metadata.gz: 29f4ac346214c2037d109175b797ef0af4c78ca7
4
+ data.tar.gz: 433f57a538f9d55bd4503115eb01ccb621157a3f
5
5
  SHA512:
6
- metadata.gz: 02544a5f552ca8205ccd6aff687b60460f001c06b49db580ebfc9ad2cc841e5af9af65440af2494d1ba3f4baf6c56b002d68ce1afc720b90c5b0192d62d7c509
7
- data.tar.gz: 9ac237ebc9b635993885a286f8b22353c98c655efc68fde7c50056dba9cbc332298465e328bcc80c8cf23cc6a0f44eab59c21aa381943c06a43c54993fe8a4a5
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 each_with_object(memoized)
11
- raw_parameters.each do |raw_parameter|
12
- next if raw_parameter[0] == 'query' ||
13
- raw_parameter[1] == '' ||
14
- raw_parameter[1].nil?
10
+ def present?
11
+ compacted_parameters.any?
12
+ end
15
13
 
16
- memoized = yield raw_parameter[0], raw_parameter[1], memoized
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
@@ -6,7 +6,11 @@ class Index
6
6
  attr_accessor :raw_parameters
7
7
 
8
8
  def initialize(raw_parameters)
9
- self.raw_parameters = raw_parameters
9
+ self.raw_parameters = raw_parameters || {}
10
+ end
11
+
12
+ def present?
13
+ query
10
14
  end
11
15
 
12
16
  def query
@@ -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(',') : ['-created_at']
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 resource.respond_to?(:for_query) &&
25
- parameters.query
24
+ return resource unless parameters.present?
26
25
 
27
26
  resource.for_query(parameters.query)
28
27
  end
@@ -21,6 +21,8 @@ class Paging
21
21
  end
22
22
 
23
23
  def processed
24
+ return resource unless parameters.present?
25
+
24
26
  resource.page(parameters.page_number).
25
27
  per(parameters.per_page)
26
28
  end
@@ -21,6 +21,8 @@ class Sorting
21
21
  end
22
22
 
23
23
  def processed
24
+ return resource unless parameters.present?
25
+
24
26
  resource.order(parameters.to_h)
25
27
  end
26
28
 
@@ -1,3 +1,3 @@
1
1
  module Apill
2
- VERSION = '3.0.0'
2
+ VERSION = '3.0.1'
3
3
  end
@@ -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(25).
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.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 00:00:00.000000000 Z
11
+ date: 2015-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: human_error