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