acfs 0.33.1.1.b281 → 0.33.1.1.b285
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/acfs/collection.rb +2 -0
- data/lib/acfs/collections/paginatable.rb +16 -0
- data/lib/acfs/model/query_methods.rb +2 -1
- data/lib/acfs/operation.rb +1 -1
- data/lib/acfs/stub.rb +2 -1
- data/spec/acfs/collection_spec.rb +42 -0
- data/spec/acfs/stub_spec.rb +14 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZTc2ZGE4MDNiNjgwNWMzNTBkYzJjNzU1YmEzMjRhOGFkMjE0ZDQ4MQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NjM5MzYwYTAwMmIzZDVjY2IyZDk5NmVkZDA0MGZiZjg2NjdjNTRlNg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmFlMzIwMDg0NGRmZjAwZDM0YmZjYTEzMTc4MzYxYTdiYjc1NTc4M2I1NGMy
|
10
|
+
ZWVmYzc0YmNkNGM4OGZmMTBiYTFkOGQ5ODc4NDdlMDM0MjU1MTNhMTFkNTFk
|
11
|
+
NTQxNGRlMDgyMGUwNzcxNmRlMmRkOGRlOGEwYjI5NmVlNWYyZTc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZTg2ZTRmZDQyOTg0MmI2MDRmNmNiMTRjY2MyYTlhNjdkMzdjNmViYjMwNzk3
|
14
|
+
MmYxZGI3YjY5YmM2ZTU0NTg5YjAxODZhN2U5MzAyMTc4MjY1YWE5MTljM2I3
|
15
|
+
OTA0ZWI1MmJiNmU1YzE5MDkxYjM2ODkwMWQ2ZDZlZTJlMjRjMTg=
|
data/lib/acfs/collection.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
|
3
3
|
require 'acfs/model/loadable'
|
4
|
+
require 'acfs/collections/paginatable'
|
4
5
|
|
5
6
|
module Acfs
|
6
7
|
|
7
8
|
class Collection < ::Delegator
|
8
9
|
include Model::Loadable
|
9
10
|
include Acfs::Util::Callbacks
|
11
|
+
include Collections::Paginatable
|
10
12
|
|
11
13
|
def initialize
|
12
14
|
super([])
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Acfs::Collections
|
2
|
+
module Paginatable
|
3
|
+
def total_pages
|
4
|
+
@total_pages
|
5
|
+
end
|
6
|
+
|
7
|
+
def current_page
|
8
|
+
@current_page
|
9
|
+
end
|
10
|
+
|
11
|
+
def setup_pagination(params, header)
|
12
|
+
@current_page = Integer(params.fetch(:page, 1)) rescue params[:page]
|
13
|
+
@total_pages = Integer(header['X-Total-Pages']) if header['X-Total-Pages']
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -75,10 +75,11 @@ module Acfs::Model
|
|
75
75
|
collection = ::Acfs::Collection.new
|
76
76
|
collection.__callbacks__ << block if block
|
77
77
|
|
78
|
-
operation :list, params: params do |data|
|
78
|
+
operation :list, params: params do |data, header|
|
79
79
|
data.each do |obj|
|
80
80
|
collection << create_resource(obj)
|
81
81
|
end
|
82
|
+
collection.setup_pagination params, header
|
82
83
|
collection.loaded!
|
83
84
|
collection.__invoke__
|
84
85
|
end
|
data/lib/acfs/operation.rb
CHANGED
@@ -50,7 +50,7 @@ module Acfs
|
|
50
50
|
request = ::Acfs::Request.new url, method: method, params: params, data: data
|
51
51
|
request.on_complete do |response|
|
52
52
|
handle_failure response unless response.success?
|
53
|
-
callback.call response.data
|
53
|
+
callback.call response.data, response.headers
|
54
54
|
end
|
55
55
|
request
|
56
56
|
end
|
data/lib/acfs/stub.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Acfs::Collection do
|
4
|
+
describe 'Pagination' do
|
5
|
+
let(:params) { Hash.new }
|
6
|
+
let!(:collection) { MyUser.all params }
|
7
|
+
|
8
|
+
subject { Acfs.run; collection }
|
9
|
+
|
10
|
+
context 'without explicit page parameter' do
|
11
|
+
before do
|
12
|
+
stub_request(:get, 'http://users.example.org/users').to_return response([{id: 1, name: 'Anon', age: 12, born_at: 'Berlin'}],
|
13
|
+
headers: {'X-Total-Pages' => '2'})
|
14
|
+
end
|
15
|
+
|
16
|
+
its(:total_pages) { should eq 2 }
|
17
|
+
its(:current_page) { should eq 1 }
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with page parameter' do
|
21
|
+
let(:params) { {page: 2} }
|
22
|
+
before do
|
23
|
+
stub_request(:get, 'http://users.example.org/users?page=2').to_return response([{id: 1, name: 'Anon', age: 12, born_at: 'Berlin'}],
|
24
|
+
headers: {'X-Total-Pages' => '2'})
|
25
|
+
end
|
26
|
+
|
27
|
+
its(:total_pages) { should eq 2 }
|
28
|
+
its(:current_page) { should eq 2 }
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'with non-numerical page parameter' do
|
32
|
+
let(:params) { {page: 'e546f5'} }
|
33
|
+
before do
|
34
|
+
stub_request(:get, 'http://users.example.org/users?page=e546f5').to_return response([{id: 1, name: 'Anon', age: 12, born_at: 'Berlin'}],
|
35
|
+
headers: {'X-Total-Pages' => '2'})
|
36
|
+
end
|
37
|
+
|
38
|
+
its(:total_pages) { should eq 2 }
|
39
|
+
its(:current_page) { should eq 'e546f5' }
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/spec/acfs/stub_spec.rb
CHANGED
@@ -154,6 +154,20 @@ describe Acfs::Stub do
|
|
154
154
|
expect(computers.last).to be_a Mac
|
155
155
|
end
|
156
156
|
end
|
157
|
+
|
158
|
+
context 'with header' do
|
159
|
+
before do
|
160
|
+
Acfs::Stub.resource Comment, :list,
|
161
|
+
return: [{ id: 1, text: 'Foo' }, { id: 2, text: 'Bar' }],
|
162
|
+
headers: headers
|
163
|
+
end
|
164
|
+
|
165
|
+
let!(:comments) { Comment.all }
|
166
|
+
let(:headers) { {'X-Total-Pages' => '2'} }
|
167
|
+
subject { Acfs.run; comments }
|
168
|
+
|
169
|
+
its(:total_pages) { should eq 2 }
|
170
|
+
end
|
157
171
|
end
|
158
172
|
|
159
173
|
context 'with update action' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acfs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.33.1.1.
|
4
|
+
version: 0.33.1.1.b285
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Graichen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -123,6 +123,7 @@ files:
|
|
123
123
|
- lib/acfs/adapter/base.rb
|
124
124
|
- lib/acfs/adapter/typhoeus.rb
|
125
125
|
- lib/acfs/collection.rb
|
126
|
+
- lib/acfs/collections/paginatable.rb
|
126
127
|
- lib/acfs/configuration.rb
|
127
128
|
- lib/acfs/errors.rb
|
128
129
|
- lib/acfs/global.rb
|
@@ -170,6 +171,7 @@ files:
|
|
170
171
|
- lib/acfs/util.rb
|
171
172
|
- lib/acfs/version.rb
|
172
173
|
- lib/acfs/yard.rb
|
174
|
+
- spec/acfs/collection_spec.rb
|
173
175
|
- spec/acfs/configuration_spec.rb
|
174
176
|
- spec/acfs/middleware/json_decoder_spec.rb
|
175
177
|
- spec/acfs/middleware/msgpack_decoder_spec.rb
|
@@ -225,6 +227,7 @@ signing_key:
|
|
225
227
|
specification_version: 4
|
226
228
|
summary: An abstract API base client for service oriented application.
|
227
229
|
test_files:
|
230
|
+
- spec/acfs/collection_spec.rb
|
228
231
|
- spec/acfs/configuration_spec.rb
|
229
232
|
- spec/acfs/middleware/json_decoder_spec.rb
|
230
233
|
- spec/acfs/middleware/msgpack_decoder_spec.rb
|