graphlient 0.5.0 → 0.6.0

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
  SHA256:
3
- metadata.gz: c049e978a0c48e45fe84d49470bc890ae3b6ea86b86aab8158322616c62968dd
4
- data.tar.gz: c7307c2b5c6ac6ac2b55ee4d416bbfffee1e29ed0826916254077add10370ee9
3
+ metadata.gz: 2b777ec75d94d228faa748cadb28c1687b16a377892138a9fc8d1048773b8853
4
+ data.tar.gz: a3bc9f948ffa5c4fe6368282834b7cd4e7addc00b7d1c90ced575ce41e8a8b3a
5
5
  SHA512:
6
- metadata.gz: 627d0d04d5ecea5e4c33ea0e59b15ac46fc458f76f179ac624d3519036865ad29267f629b1b3fda7592a50c846ea2cf06cc58a8f188a06caee44715268c18d07
7
- data.tar.gz: 9742adef6879fbd08b00350674dced4b4886e476b45388d6d1a1afaaebba440153632e878649ff68beb223b158f365dd180b6db76e8463a13dbbeb4cdf8aa88d
6
+ metadata.gz: fc0080c0fab50ac5ecee6815fb24e6b216cba32558d010ebd3d9661581b55f3b3fca8b70e11f0e61f96eb471931645c12b3a3b8c2361909da31a15c650ab6bcb
7
+ data.tar.gz: feb39198706b8b9650da8f6f35f080744df668420d948f2b7d69d84dd3b812301542d5735d1a69f77d865706e5853703861fe440a1ab47ea2cfef3b91712f794
@@ -0,0 +1,29 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ entry:
14
+ - { ruby: 2.7.2 }
15
+ - { ruby: 3.0.0 }
16
+ - { ruby: 3.1.2 }
17
+ - { ruby: "ruby-head", ignore: true }
18
+ - { ruby: "jruby-9.1.17", ignore: true }
19
+ - { ruby: "jruby-head", ignore: true }
20
+ steps:
21
+ - uses: actions/checkout@v3
22
+ - name: Set up Ruby
23
+ uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.entry.ruby }}
26
+ bundler-cache: true
27
+ - name: Run tests
28
+ continue-on-error: ${{ matrix.entry.ignore || false }}
29
+ run: bundle exec rspec spec/
@@ -0,0 +1,20 @@
1
+ name: Danger
2
+
3
+ on: pull_request
4
+
5
+ jobs:
6
+ danger:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v3
10
+ with:
11
+ fetch-depth: 0
12
+ - name: Set up Ruby
13
+ uses: ruby/setup-ruby@v1
14
+ with:
15
+ ruby-version: 2.7.2
16
+ bundler-cache: true
17
+ - run: |
18
+ # the personal token is public, this is ok, base64 encode to avoid tripping Github
19
+ TOKEN=$(echo -n NWY1ZmM5MzEyMzNlYWY4OTZiOGU3MmI3MWQ3Mzk0MzgxMWE4OGVmYwo= | base64 --decode)
20
+ DANGER_GITHUB_API_TOKEN=$TOKEN bundle exec danger --verbose
@@ -0,0 +1,19 @@
1
+ name: Rubocop
2
+
3
+ on: [push, pull_request]
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ jobs:
9
+ rubocop:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v3
13
+ - name: Set up Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.7.2
17
+ bundler-cache: true
18
+ - name: Run rubocop
19
+ run: bundle exec rubocop
data/CHANGELOG.md CHANGED
@@ -1,74 +1,79 @@
1
- ### 0.6.0 (Next)
2
- * Your contribution here.
1
+ ### 0.6.0 (2022/06/11)
3
2
 
4
- ### 0.5.0 (12/28/2020)
3
+ * [#87](https://github.com/ashkan18/graphlient/pull/87): Raised `ExecutionError` with partial error response - [@QQism](https://github.com/QQism).
4
+ * [#90](https://github.com/ashkan18/graphlient/pull/90): Added support for Ruby 3.1 - [@QQism](https://github.com/QQism).
5
+ * [#90](https://github.com/ashkan18/graphlient/pull/90): Dropped support for Ruby 2.5 - [@QQism](https://github.com/QQism).
6
+ * [#91](https://github.com/ashkan18/graphlient/pull/91): Update GHA for `danger` with right permissions - [@QQism](https://github.com/QQism).
7
+ * [#89](https://github.com/ashkan18/graphlient/pull/89): Replace Travis CI with Github Actions - [@QQism](https://github.com/QQism).
8
+
9
+ ### 0.5.0 (2020/12/28)
5
10
 
6
11
  * [#81](https://github.com/ashkan18/graphlient/pull/81): Make graphlient run on ruby 3.0 - [@Burgestrand](https://github.com/Burgestrand).
7
12
  * [#79](https://github.com/ashkan18/graphlient/pull/79): Added client testing docs - [@GabrielDzul](https://github.com/GabrielDzul).
8
13
 
9
- ### 0.4.0 (5/22/2020)
14
+ ### 0.4.0 (2020/05/22)
10
15
 
11
16
  * [#72](https://github.com/ashkan18/graphlient/pull/72): Add http_options - [@neroleung](https://github.com/neroleung).
12
17
  * [#71](https://github.com/ashkan18/graphlient/issues/70): Add `Graphlient::Errors::TimeoutError` - [@BenDrozdoff](https://github.com/BenDrozdoff).
13
18
  * [#75](https://github.com/ashkan18/graphlient/pull/75): Support Faraday 1.x - [@jfhinchcliffe](https://github.com/jfhinchcliffe).
14
19
  * [#78](https://github.com/ashkan18/graphlient/pull/78): Add description of timeout values - [@sap1enza](https://github.com/sap1enza).
15
20
 
16
- ### 0.3.7 (11/14/2019)
21
+ ### 0.3.7 (2019/11/14)
17
22
 
18
23
  * [#68](https://github.com/ashkan18/graphlient/pull/68): Add `Graphlient::Errors::ConnectionFailedError` - [@neroleung](https://github.com/neroleung).
19
24
 
20
- ### 0.3.6 (07/23/2019)
25
+ ### 0.3.6 (2019/07/23)
21
26
 
22
27
  * [#63](https://github.com/ashkan18/graphlient/pull/63): Remove unused method for attribute with typo - [@ashkan18](https://github.com/ashkan18).
23
28
  * [#62](https://github.com/ashkan18/graphlient/pull/62): Fix typo preventing access to response object on error - [@jmondo](https://github.com/jmondo).
24
29
 
25
- ### 0.3.4 (01/31/2019)
30
+ ### 0.3.4 (2019/01/31)
26
31
 
27
32
  * [#56](https://github.com/ashkan18/graphlient/pull/56): Remove safe navigation usage to retain support for Ruby 2.2 - [@avinoth](https://github.com/avinoth).
28
33
  * [#57](https://github.com/ashkan18/graphlient/pull/57): Add support for parsing queries from a String - [@ateamlunchbox](https://github.com/ateamlunchbox).
29
34
 
30
- ### 0.3.3 (09/23/2018)
35
+ ### 0.3.3 (2018/09/23)
31
36
 
32
37
  * [#50](https://github.com/ashkan18/graphlient/pull/50): More detailed error responses - [@ashkan18](https://github.com/ashkan18).
33
38
 
34
- ### 0.3.2 (07/03/2018)
39
+ ### 0.3.2 (2018/07/03)
35
40
 
36
41
  * [#46](https://github.com/ashkan18/graphlient/pull/46): Fix issue with gathering error details when trying `to_s` on `GraphQLError` - [@ashkan18](https://github.com/ashkan18).
37
42
  * [#45](https://github.com/ashkan18/graphlient/pull/45): Drop Support for Ruby 2.2 and Lock RuboCop - [@jonallured](https://github.com/jonallured).
38
43
 
39
- ### 0.3.1 (04/17/2018)
44
+ ### 0.3.1 (2018/04/17)
40
45
 
41
46
  * [#43](https://github.com/ashkan18/graphlient/pull/43): Allow to load and dump schema to json - [@povilasjurcys](https://github.com/povilasjurcys).
42
47
 
43
- ### 0.3.0 (02/22/2018)
48
+ ### 0.3.0 (2018/02/22)
44
49
 
45
50
  * [#38](https://github.com/ashkan18/graphlient/pull/38): Add support for Ruby 2.5 - [@yuki24](https://github.com/yuki24).
46
51
  * [#39](https://github.com/ashkan18/graphlient/pull/39): Add support for Ruby 2.2 - [@yuki24](https://github.com/yuki24).
47
52
  * [#40](https://github.com/ashkan18/graphlient/pull/40): Add experimental support for JRuby - [@yuki24](https://github.com/yuki24).
48
53
 
49
- ### 0.2.0 (11/09/2017)
54
+ ### 0.2.0 (2017/11/09)
50
55
 
51
56
  * [#33](https://github.com/ashkan18/graphlient/pull/33): Added dsl for supporting parametrized queries/mutations - [@ashkan18](https://github.com/ashkan18).
52
57
  * [#34](https://github.com/ashkan18/graphlient/issues/34): Fix: don't convert variables to `String` - [@dblock](https://github.com/dblock).
53
58
 
54
- ### 0.1.0 (10/27/2017)
59
+ ### 0.1.0 (2017/10/27)
55
60
 
56
61
  * [#31](https://github.com/ashkan18/graphlient/issues/31): Fix: catch execution errors that don't contain field names - [@dblock](https://github.com/dblock).
57
62
 
58
- ### 0.0.9 (10/26/2017)
63
+ ### 0.0.9 (2017/10/26)
59
64
 
60
65
  * [#28](https://github.com/ashkan18/graphlient/pull/28): Raise errors in `execute`, not only `query` - [@dblock](https://github.com/dblock).
61
66
  * [#29](https://github.com/ashkan18/graphlient/pull/29): Added `Graphlient::Adapters::HTTP::HTTPAdapter` that replaces Faraday with `Net::HTTP` - [@dblock](https://github.com/dblock).
62
67
 
63
- ### 0.0.8 (10/26/2017)
68
+ ### 0.0.8 (2017/10/26)
64
69
 
65
70
  * [#27](https://github.com/ashkan18/graphlient/pull/27): Always raise an exception unless a query has succeeded - [@dblock](https://github.com/dblock).
66
71
 
67
- ### 0.0.7 (10/24/2017)
72
+ ### 0.0.7 (2017/10/24)
68
73
 
69
74
  * [#26](https://github.com/ashkan18/graphlient/pull/26): Support String queries - [@dblock](https://github.com/dblock).
70
75
 
71
- ### 0.0.6 (10/20/2017)
76
+ ### 0.0.6 (2017/10/20)
72
77
 
73
78
  * [#14](https://github.com/ashkan18/graphlient/pull/14): Switch to `graphql-client` for network calls and schema validation - [@ashkan18](https://github.com/ashkan18).
74
79
  * [#17](https://github.com/ashkan18/graphlient/pull/17): Specialize server errors as `Graphlient::Errors::Server` - [@dblock](https://github.com/dblock).
@@ -79,16 +84,16 @@
79
84
  * [#20](https://github.com/ashkan18/graphlient/pull/20): Added support for parameterized queries and mutations - [@dblock](https://github.com/dblock).
80
85
  * [#25](https://github.com/ashkan18/graphlient/pull/25): Added `client.parse` and `client.execute` to parse and execute queries separately - [@dblock](https://github.com/dblock).
81
86
 
82
- ### 0.0.5 (10/5/2017)
87
+ ### 0.0.5 (2017/10/05)
83
88
 
84
89
  * [#11](https://github.com/ashkan18/graphlient/pull/11): Fixed query argument types - [@ashkan18](https://github.com/ashkan18).
85
90
 
86
- ### 0.0.4 (10/4/2017)
91
+ ### 0.0.4 (2017/10/04)
87
92
 
88
93
  * [#8](https://github.com/ashkan18/graphlient/pull/8): Handle HTTP errors and raise `Graphlient::Errors::HTTP` on failure - [@dblock](https://github.com/dblock).
89
94
  * [#5](https://github.com/ashkan18/graphlient/pull/5): Added RuboCop, Ruby-style linter, CHANGELOG, CONTRIBUTING and RELEASING - [@dblock](https://github.com/dblock).
90
95
  * [#4](https://github.com/ashkan18/graphlient/pull/4): Refactored Graphlient::Client to take a URL and options, moved extensions - [@dblock](https://github.com/dblock).
91
96
 
92
- ### 0.0.3 (10/3/2017)
97
+ ### 0.0.3 (2017/10/03)
93
98
 
94
99
  * Initial public release - [@ashkan18](https://github.com/ashkan18).
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Graphlient
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/graphlient.svg)](https://badge.fury.io/rb/graphlient)
4
- [![Build Status](https://travis-ci.org/ashkan18/graphlient.svg?branch=master)](https://travis-ci.org/ashkan18/graphlient)
4
+ [![Build Status](https://github.com/ashkan18/graphlient/actions/workflows/ci.yml/badge.svg)](https://github.com/ashkan18/graphlient/actions/workflows/ci.yml)
5
5
 
6
6
  A friendlier Ruby client for consuming GraphQL-based APIs. Built on top of your usual [graphql-client](https://github.com/github/graphql-client), but with better defaults, more consistent error handling, and using the [faraday](https://github.com/lostisland/faraday) HTTP client.
7
7
 
@@ -435,4 +435,3 @@ end
435
435
  ## License
436
436
 
437
437
  MIT License, see [LICENSE](LICENSE)
438
-
@@ -67,7 +67,7 @@ module Graphlient
67
67
  end
68
68
 
69
69
  def errors_in_result?(response)
70
- response.data && response.data.errors && response.data.errors.any?
70
+ response.data && response.data.errors && response.data.errors.all.any?
71
71
  end
72
72
  end
73
73
  end
@@ -1,3 +1,3 @@
1
1
  module Graphlient
2
- VERSION = '0.5.0'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -80,6 +80,29 @@ describe Graphlient::Client do
80
80
  GRAPHQL
81
81
  end
82
82
 
83
+ let(:execution_error_query) do
84
+ <<-GRAPHQL
85
+ query($id: Int) {
86
+ executionErrorInvoice(id: $id) {
87
+ id
88
+ feeInCents
89
+ }
90
+ }
91
+ GRAPHQL
92
+ end
93
+
94
+ let(:partial_success_query) do
95
+ <<-GRAPHQL
96
+ query {
97
+ someInvoices {
98
+ id
99
+ feeInCents
100
+ createdAt
101
+ }
102
+ }
103
+ GRAPHQL
104
+ end
105
+
83
106
  it '#execute' do
84
107
  response = client.execute(query, id: 42)
85
108
  invoice = response.data.invoice
@@ -97,10 +120,9 @@ describe Graphlient::Client do
97
120
 
98
121
  it 'fails on an execution error' do
99
122
  expect do
100
- allow(OpenStruct).to receive(:new).and_raise StandardError, 'Unexpected error.'
101
- client.execute(query, id: 42)
123
+ client.execute(execution_error_query, id: 42)
102
124
  end.to raise_error Graphlient::Errors::ExecutionError do |e|
103
- expect(e.to_s).to eq 'invoice: Unexpected error.'
125
+ expect(e.to_s).to eq 'executionErrorInvoice: Execution Error'
104
126
  end
105
127
  end
106
128
 
@@ -119,6 +141,14 @@ describe Graphlient::Client do
119
141
  expect(e.response).to be_a GraphQL::Client::Response
120
142
  end
121
143
  end
144
+
145
+ it 'fails with a partial error response' do
146
+ expect do
147
+ client.execute(partial_success_query)
148
+ end.to raise_error Graphlient::Errors::ExecutionError do |e|
149
+ expect(e.response).to be_a GraphQL::Client::Response
150
+ end
151
+ end
122
152
  end
123
153
 
124
154
  context 'non-parameterized query' do
@@ -1,3 +1,4 @@
1
+ require_relative '../types/invoice_type'
1
2
  class CreateInvoice < GraphQL::Schema::RelayClassicMutation
2
3
  null true
3
4
 
@@ -10,6 +10,15 @@ class Query < GraphQL::Schema::Object
10
10
  argument :id, Integer, required: false
11
11
  end
12
12
 
13
+ field :execution_error_invoice, InvoiceType, null: false, extras: [:execution_errors] do
14
+ description 'Find invoice'
15
+ argument :id, Integer, required: false
16
+ end
17
+
18
+ field :some_invoices, [InvoiceType], null: true do
19
+ description 'List of invoices'
20
+ end
21
+
13
22
  def invoice(id: nil)
14
23
  return nil if id.nil?
15
24
  OpenStruct.new(
@@ -21,4 +30,18 @@ class Query < GraphQL::Schema::Object
21
30
  def not_null_invoice(*)
22
31
  nil
23
32
  end
33
+
34
+ def execution_error_invoice(id: nil, execution_errors:)
35
+ execution_errors.add(GraphQL::ExecutionError.new('Execution Error'))
36
+
37
+ invoice(id: id)
38
+ end
39
+
40
+ def some_invoices
41
+ [
42
+ OpenStruct.new(id: 0, fee_in_cents: 20_000),
43
+ OpenStruct.new(id: 1, fee_in_cents: 20_000),
44
+ OpenStruct.new(id: 2, fee_in_cents: 20_000)
45
+ ]
46
+ end
24
47
  end
@@ -4,4 +4,10 @@ class InvoiceType < GraphQL::Schema::Object
4
4
 
5
5
  field :id, ID, null: false
6
6
  field :fee_in_cents, Integer, null: true
7
+ field :created_at, String, null: true, extras: [:execution_errors]
8
+
9
+ def created_at(execution_errors:)
10
+ execution_errors.add(GraphQL::ExecutionError.new('This is a partial error'))
11
+ Time.now.iso8601
12
+ end
7
13
  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.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ashkan Nasseri
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-28 00:00:00.000000000 Z
11
+ date: 2022-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -58,11 +58,13 @@ executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
+ - ".github/workflows/ci.yml"
62
+ - ".github/workflows/danger.yml"
63
+ - ".github/workflows/rubocop.yml"
61
64
  - ".gitignore"
62
65
  - ".rspec"
63
66
  - ".rubocop.yml"
64
67
  - ".rubocop_todo.yml"
65
- - ".travis.yml"
66
68
  - CHANGELOG.md
67
69
  - CONTRIBUTING.md
68
70
  - Dangerfile
@@ -140,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
142
  - !ruby/object:Gem::Version
141
143
  version: 1.3.6
142
144
  requirements: []
143
- rubygems_version: 3.0.8
145
+ rubygems_version: 3.1.3
144
146
  signing_key:
145
147
  specification_version: 4
146
148
  summary: A friendlier Ruby client for consuming GraphQL-based APIs.
data/.travis.yml DELETED
@@ -1,24 +0,0 @@
1
- language: ruby
2
-
3
- cache: bundler
4
-
5
- rvm:
6
- - 2.5.0
7
- - 2.7.2
8
- - 3.0.0
9
- - ruby-head
10
- - jruby-9.1.16.0
11
- - jruby-head
12
-
13
- before_install:
14
- - gem update --system
15
-
16
- matrix:
17
- include:
18
- - rvm: 2.7.2
19
- script:
20
- - bundle exec danger
21
- allow_failures:
22
- - rvm: ruby-head
23
- - rvm: jruby-9.1.16.0
24
- - rvm: jruby-head