graphlient 0.3.3 → 0.3.5

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