hyperclient 0.8.2 → 0.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +1 -1
- data/.travis.yml +6 -1
- data/CHANGELOG.md +4 -0
- data/Rakefile +0 -2
- data/features/api_navigation.feature +5 -0
- data/features/steps/api_navigation.rb +8 -0
- data/features/support/api.rb +2 -0
- data/features/support/fixtures.rb +1 -0
- data/lib/hyperclient/entry_point.rb +2 -0
- data/lib/hyperclient/version.rb +1 -1
- data/test/hyperclient/entry_point_test.rb +6 -0
- metadata +4 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bed16cb9c2392b30c87a860e6ec535b6d3fc7be8
|
4
|
+
data.tar.gz: 5ac012a05c90ba7972bb4bf438a02059fb42ca49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a71056f91a8b0748fe4a381cec303d48f452090a05a4bacad87f1f36c51a302e85876e91a6241e7030b1e8f3e6fdd99beb7cb79796b88f96f84cd8c453c51c5
|
7
|
+
data.tar.gz: 2f8cf4720cd00317c958a4947b41bb3562f8df4727141f5575ebf37ba3c28d8da27a7517b88879f2baceb016234d39ec8d4858f2aad3c8d599c194147118fa26
|
data/.rubocop_todo.yml
CHANGED
data/.travis.yml
CHANGED
@@ -10,13 +10,18 @@ matrix:
|
|
10
10
|
- rvm: 2.3.1
|
11
11
|
- rvm: 2.3.0
|
12
12
|
- rvm: 2.2.5
|
13
|
+
- rvm: 2.4.0
|
13
14
|
- rvm: rbx-2
|
14
15
|
- rvm: ruby-head
|
15
16
|
- rvm: jruby-head
|
16
|
-
- rvm: jruby-9.1.
|
17
|
+
- rvm: jruby-9.1.7.0
|
17
18
|
allow_failures:
|
18
19
|
- rvm: ruby-head
|
19
20
|
- rvm: jruby-head
|
20
21
|
- rvm: rbx-2
|
21
22
|
|
23
|
+
before_install:
|
24
|
+
- gem update --system
|
25
|
+
- gem install bundler
|
26
|
+
|
22
27
|
bundler_args: --without development
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
### 0.8.3 (March 30, 2017)
|
2
|
+
|
3
|
+
* [#115](https://github.com/codegram/hyperclient/pull/115): Fix dropped values from queries by using FlatParamsEncoder - [@ivoanjo](https://github.com/ivoanjo).
|
4
|
+
|
1
5
|
### 0.8.2 (December 31, 2016)
|
2
6
|
|
3
7
|
#### This version is no longer tested with Ruby < 2.2.
|
data/Rakefile
CHANGED
@@ -12,6 +12,11 @@ Feature: API navigation
|
|
12
12
|
When I search for a post with a templated link
|
13
13
|
Then the API should receive the request with all the params
|
14
14
|
|
15
|
+
Scenario: Templated links with multiple values
|
16
|
+
Given I connect to the API
|
17
|
+
When I search for posts by tag with a templated link
|
18
|
+
Then the API should receive the request for posts by tag with all the params
|
19
|
+
|
15
20
|
Scenario: Attributes
|
16
21
|
Given I connect to the API
|
17
22
|
When I load a single post
|
@@ -17,6 +17,14 @@ class Spinach::Features::ApiNavigation < Spinach::FeatureSteps
|
|
17
17
|
assert_requested :get, 'http://api.example.org/search?q=something'
|
18
18
|
end
|
19
19
|
|
20
|
+
step 'I search for posts by tag with a templated link' do
|
21
|
+
api._links.tagged._expand(tags: %w(foo bar))._resource
|
22
|
+
end
|
23
|
+
|
24
|
+
step 'the API should receive the request for posts by tag with all the params' do
|
25
|
+
assert_requested :get, 'http://api.example.org/search?tags=foo&tags=bar'
|
26
|
+
end
|
27
|
+
|
20
28
|
step 'I load a single post' do
|
21
29
|
@post = api._links.posts._links.last_post
|
22
30
|
end
|
data/features/support/api.rb
CHANGED
@@ -5,6 +5,8 @@ module API
|
|
5
5
|
include Spinach::Fixtures
|
6
6
|
|
7
7
|
before do
|
8
|
+
WebMock::Config.instance.query_values_notation = :flat_array
|
9
|
+
|
8
10
|
stub_request(:any, %r{api.example.org*}).to_return(body: root_response, headers: { 'Content-Type' => 'application/hal+json' })
|
9
11
|
stub_request(:get, 'api.example.org/posts').to_return(body: posts_response, headers: { 'Content-Type' => 'application/hal+json' })
|
10
12
|
stub_request(:get, 'api.example.org/posts/1').to_return(body: post_response, headers: { 'Content-Type' => 'application/hal+json' })
|
@@ -8,6 +8,7 @@ module Spinach
|
|
8
8
|
"self": { "href": "/" },
|
9
9
|
"posts": { "href": "/posts" },
|
10
10
|
"search": { "href": "/search{?q}", "templated": true },
|
11
|
+
"tagged": { "href": "/search{?tags*}", "templated": true },
|
11
12
|
"api:authors": { "href": "/authors" },
|
12
13
|
"next": { "href": "/page2" }
|
13
14
|
}
|
@@ -40,6 +40,7 @@ module Hyperclient
|
|
40
40
|
@entry_point = self
|
41
41
|
@options = { async: true }
|
42
42
|
@connection = nil
|
43
|
+
@resource = nil
|
43
44
|
yield self if block_given?
|
44
45
|
end
|
45
46
|
|
@@ -138,6 +139,7 @@ module Hyperclient
|
|
138
139
|
connection.request :hal_json
|
139
140
|
connection.response :hal_json, content_type: /\bjson$/
|
140
141
|
connection.adapter :net_http
|
142
|
+
connection.options.params_encoder = Faraday::FlatParamsEncoder
|
141
143
|
end
|
142
144
|
end
|
143
145
|
|
data/lib/hyperclient/version.rb
CHANGED
@@ -33,11 +33,14 @@ module Hyperclient
|
|
33
33
|
|
34
34
|
it 'creates a Faraday connection with the default block' do
|
35
35
|
handlers = entry_point.connection.builder.handlers
|
36
|
+
|
36
37
|
handlers.must_include Faraday::Response::RaiseError
|
37
38
|
handlers.must_include FaradayMiddleware::FollowRedirects
|
38
39
|
handlers.must_include FaradayMiddleware::EncodeHalJson
|
39
40
|
handlers.must_include FaradayMiddleware::ParseHalJson
|
40
41
|
handlers.must_include Faraday::Adapter::NetHttp
|
42
|
+
|
43
|
+
entry_point.connection.options.params_encoder.must_equal Faraday::FlatParamsEncoder
|
41
44
|
end
|
42
45
|
|
43
46
|
it 'raises a ConnectionAlreadyInitializedError if attempting to modify headers' do
|
@@ -172,12 +175,15 @@ module Hyperclient
|
|
172
175
|
|
173
176
|
it 'creates a Faraday connection with the default block plus any additional handlers' do
|
174
177
|
handlers = entry_point.connection.builder.handlers
|
178
|
+
|
175
179
|
handlers.must_include Faraday::Request::OAuth
|
176
180
|
handlers.must_include Faraday::Response::RaiseError
|
177
181
|
handlers.must_include FaradayMiddleware::FollowRedirects
|
178
182
|
handlers.must_include FaradayMiddleware::EncodeHalJson
|
179
183
|
handlers.must_include FaradayMiddleware::ParseHalJson
|
180
184
|
handlers.must_include Faraday::Adapter::NetHttp
|
185
|
+
|
186
|
+
entry_point.connection.options.params_encoder.must_equal Faraday::FlatParamsEncoder
|
181
187
|
end
|
182
188
|
end
|
183
189
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hyperclient
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oriol Gual
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -183,29 +183,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
183
|
version: '0'
|
184
184
|
requirements: []
|
185
185
|
rubyforge_project:
|
186
|
-
rubygems_version: 2.
|
186
|
+
rubygems_version: 2.6.11
|
187
187
|
signing_key:
|
188
188
|
specification_version: 4
|
189
189
|
summary: ''
|
190
|
-
test_files:
|
191
|
-
- features/api_navigation.feature
|
192
|
-
- features/default_config.feature
|
193
|
-
- features/steps/api_navigation.rb
|
194
|
-
- features/steps/default_config.rb
|
195
|
-
- features/support/api.rb
|
196
|
-
- features/support/env.rb
|
197
|
-
- features/support/fixtures.rb
|
198
|
-
- test/faraday/connection_test.rb
|
199
|
-
- test/fixtures/collection.json
|
200
|
-
- test/fixtures/element.json
|
201
|
-
- test/fixtures/root.json
|
202
|
-
- test/hyperclient/attributes_test.rb
|
203
|
-
- test/hyperclient/collection_test.rb
|
204
|
-
- test/hyperclient/curie_test.rb
|
205
|
-
- test/hyperclient/entry_point_test.rb
|
206
|
-
- test/hyperclient/link_collection_test.rb
|
207
|
-
- test/hyperclient/link_test.rb
|
208
|
-
- test/hyperclient/resource_collection_test.rb
|
209
|
-
- test/hyperclient/resource_test.rb
|
210
|
-
- test/hyperclient_test.rb
|
211
|
-
- test/test_helper.rb
|
190
|
+
test_files: []
|