graphlient 0.3.3 → 0.3.5

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: 7ed6aeee8ae9bf6da765d8142a11387f17bfff3f
4
- data.tar.gz: 084a33299652bb41bd08b83dd752a9703f0d7c58
3
+ metadata.gz: a6d0e92ac6d77cf9f1e57056c517074fb3ddf053
4
+ data.tar.gz: b9ecc89c535d2ef16ca945df3836a499038279ac
5
5
  SHA512:
6
- metadata.gz: af15ee7373138bea76bf1d01beacdafa28ad50240974539c1fd33b3513a571253ce3df7b8739f4fbbd1ff3cbbe776af51c5c719c7ac68bc46e011d72cd97a3b1
7
- data.tar.gz: 4711176bd83a7d24d13ee8bef46ab8eaf54473d03da06912a00a1c4bb544057285801765e753ea5225e073f3e9bbcaf8f1769c75efc203767525f6a120354c44
6
+ metadata.gz: 4295209e08e772f6d3e419d38df7f6eda09d02c47f84f97ec4b2f1ae13b7c716013a43715d336830f80bf7309d0d0a8eb67151d3162118c5a716dbef948abd49
7
+ data.tar.gz: 5cbb4cc4fae863e5bb91257d8299249709e06b3b6a0c8fcb9d29aa7f5db90219df977c11417338ac7af9778fbcb66dbaa673c1af438b62daf51f77744dd138d2
@@ -4,6 +4,9 @@ Style/FrozenStringLiteralComment:
4
4
  Style/Documentation:
5
5
  Enabled: false
6
6
 
7
+ Style/SafeNavigation:
8
+ Enabled: false
9
+
7
10
  Metrics/LineLength:
8
11
  Enabled: false
9
12
 
@@ -1,6 +1,14 @@
1
- ### 0.3.3 (Next)
1
+ ### 0.3.5 (Next)
2
2
 
3
3
  * Your contribution here.
4
+
5
+ ### 0.3.4 (01/31/2019)
6
+
7
+ * [#56](https://github.com/ashkan18/graphlient/pull/56): Remove safe navigation usage to retain support for Ruby 2.2 - [@avinoth](https://github.com/avinoth).
8
+ * [#57](https://github.com/ashkan18/graphlient/pull/57): Add support for parsing queries from a String - [@ateamlunchbox](https://github.com/ateamlunchbox).
9
+
10
+ ### 0.3.3 (09/23/2018)
11
+
4
12
  * [#50](https://github.com/ashkan18/graphlient/pull/50): More detailed error responses - [@ashkan18](https://github.com/ashkan18).
5
13
 
6
14
  ### 0.3.2 (07/03/2018)
data/README.md CHANGED
@@ -208,6 +208,23 @@ end
208
208
  client.execute query, ids: [42]
209
209
  ```
210
210
 
211
+ Or pass in a string instead of a block:
212
+
213
+ ```ruby
214
+ # parse a query, returns a GraphQL::Client::OperationDefinition
215
+ query = client.parse <<~GRAPHQL
216
+ query($some_id: Int) {
217
+ invoice(id: $some_id) {
218
+ id
219
+ feeInCents
220
+ }
221
+ }
222
+ GRAPHQL
223
+
224
+ # execute a query, returns a GraphQL::Client::Response
225
+ client.execute query, ids: [42]
226
+ ```
227
+
211
228
  ### Dynamic vs. Static Queries
212
229
 
213
230
  Graphlient uses [graphql-client](https://github.com/github/graphql-client), which [recommends](https://github.com/github/graphql-client/blob/master/guides/dynamic-query-error.md) building queries as static module members along with dynamic variables during execution. This can be accomplished with graphlient the same way.
@@ -21,6 +21,8 @@ Change next release in [CHANGELOG.md](CHANGELOG.md) to the new version.
21
21
 
22
22
  Remove the line with "Your contribution here.", since there will be no more contributions to this release.
23
23
 
24
+ Update the version in `lib/graphlient/version.rb`.
25
+
24
26
  Commit your changes.
25
27
 
26
28
  ```
@@ -9,7 +9,7 @@ module Graphlient
9
9
 
10
10
  request['Accept'] = 'application/json'
11
11
  request['Content-Type'] = 'application/json'
12
- headers&.each { |name, value| request[name] = value }
12
+ headers && headers.each { |name, value| request[name] = value }
13
13
 
14
14
  body = {}
15
15
  body['query'] = document.to_query_string
@@ -8,8 +8,8 @@ module Graphlient
8
8
  yield self if block_given?
9
9
  end
10
10
 
11
- def parse(&block)
12
- query_str = Graphlient::Query.new do
11
+ def parse(query_str = nil, &block)
12
+ query_str ||= Graphlient::Query.new do
13
13
  instance_eval(&block)
14
14
  end
15
15
  client.parse(query_str.to_s)
@@ -26,7 +26,7 @@ module Graphlient
26
26
  raise Graphlient::Errors::GraphQLError, rc if rc.errors.any?
27
27
  # see https://github.com/github/graphql-client/pull/132
28
28
  # see https://github.com/exAspArk/graphql-errors/issues/2
29
- raise Graphlient::Errors::ExecutionError, rc if rc.data&.errors && rc.data.errors.any?
29
+ raise Graphlient::Errors::ExecutionError, rc if errors_in_result?(rc)
30
30
  rc
31
31
  rescue GraphQL::Client::Error => e
32
32
  raise Graphlient::Errors::ClientError, e.message
@@ -63,5 +63,9 @@ module Graphlient
63
63
  client.allow_dynamic_queries = @options.key?(:allow_dynamic_queries) ? options[:allow_dynamic_queries] : true
64
64
  end
65
65
  end
66
+
67
+ def errors_in_result?(response)
68
+ response.data && response.data.errors && response.data.errors.any?
69
+ end
66
70
  end
67
71
  end
@@ -1,3 +1,3 @@
1
1
  module Graphlient
2
- VERSION = '0.3.3'.freeze
2
+ VERSION = '0.3.5'.freeze
3
3
  end
@@ -15,7 +15,16 @@ describe Graphlient::Client do
15
15
  end
16
16
  end
17
17
 
18
- Query = Client.parse do
18
+ StringQuery = Client.parse <<~GRAPHQL
19
+ query($some_id: Int) {
20
+ invoice(id: $some_id) {
21
+ id
22
+ feeInCents
23
+ }
24
+ }
25
+ GRAPHQL
26
+
27
+ BlockQuery = Client.parse do
19
28
  query(some_id: :int) do
20
29
  invoice(id: :some_id) do
21
30
  id
@@ -29,11 +38,31 @@ describe Graphlient::Client do
29
38
  expect(Graphlient::Client::Spec::Client.send(:client).allow_dynamic_queries).to be false
30
39
  end
31
40
 
32
- it '#execute' do
33
- response = Graphlient::Client::Spec::Client.execute(Graphlient::Client::Spec::Query, some_id: 42)
34
- invoice = response.data.invoice
35
- expect(invoice.id).to eq '42'
36
- expect(invoice.fee_in_cents).to eq 20_000
41
+ context 'with string-based queries' do
42
+ it 'parses a string query to an OperationDefinition' do
43
+ expect(Graphlient::Client::Spec::StringQuery.class).to be GraphQL::Client::OperationDefinition
44
+ end
45
+
46
+ it 'sets the OperationDefinition that came from a string to have a name' do
47
+ expect(Graphlient::Client::Spec::StringQuery.definition_name).to eql 'Graphlient__Client__Spec__StringQuery'
48
+ end
49
+ end
50
+
51
+ context 'with both string- and block-based queries' do
52
+ it 'gets identical results parsing equivalent string- and block-based queries' do
53
+ block_response = Graphlient::Client::Spec::Client.execute(Graphlient::Client::Spec::BlockQuery, some_id: 42)
54
+ string_response = Graphlient::Client::Spec::Client.execute(Graphlient::Client::Spec::StringQuery, some_id: 42)
55
+ expect(string_response.to_h).to eq block_response.to_h
56
+ end
57
+ end
58
+
59
+ context 'executing a query' do
60
+ it 'succeeds with expected feeInCents' do
61
+ response = Graphlient::Client::Spec::Client.execute(Graphlient::Client::Spec::BlockQuery, some_id: 42)
62
+ invoice = response.data.invoice
63
+ expect(invoice.id).to eq '42'
64
+ expect(invoice.fee_in_cents).to eq 20_000
65
+ end
37
66
  end
38
67
  end
39
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphlient
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ashkan Nasseri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-23 00:00:00.000000000 Z
11
+ date: 2019-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -136,7 +136,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
136
  version: 1.3.6
137
137
  requirements: []
138
138
  rubyforge_project:
139
- rubygems_version: 2.6.14
139
+ rubygems_version: 2.4.8
140
140
  signing_key:
141
141
  specification_version: 4
142
142
  summary: A friendlier Ruby client for consuming GraphQL-based APIs.