rspec-graphql_matchers 1.3.1 → 1.4.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: cfc59ebc6b348aeab1defdb0057751774ea69653260195b26e9a95363f86430a
4
- data.tar.gz: a23a3d725d3e0f2fa8136f7ab9b74efeb411a6e3d0e36e683ae5e99268bb08c6
3
+ metadata.gz: 7dae51bcd93df2cadbbc1f056f27246ffe9fc54fb046cd542bc0461e4caadac8
4
+ data.tar.gz: dfa65482790aa2ca2ad4d7318679e0b80f13b9ba34c27ca7f7f525e699d7ea4a
5
5
  SHA512:
6
- metadata.gz: dcd1bd614c785d6f2d5aee1a444c28af584ebf518ecce0706bb7949bc8eb3a0994ddfae953b9b3a3ceecf8a3110df2d91ff0e3dd11756aa3065a9fd9520d9ed3
7
- data.tar.gz: e3783cc55413014249911495625eb5f01efef58a5fe3acd9991d0d1a10bad45448a03d63d74ef778819003ee703ddabc936910b71c43ced6d6596bf92db17cbf
6
+ metadata.gz: 280d14d08215126ef991443f1d786c5d15b2c5c82a34378f17d3c3cd1bd8ab0ab21efd9d1ff9870115c2aeca6d6b4d72dc80aecc760dbd52b6862807440e1f5b
7
+ data.tar.gz: 571b16fe5f151501313b6a7e94ba32b4f431fa352f2cf11f0ae06af44f1a5e8143a68dc4961cdbcef359c081696391977483e1b65972bb574e2d3ab0029cfa26
@@ -2,7 +2,7 @@ name: RSpec
2
2
 
3
3
  # Controls when the action will run. Triggers the workflow on push or pull request
4
4
  # events but only for the master branch
5
- on: [ push, pull_request ]
5
+ on: [push, pull_request]
6
6
 
7
7
  jobs:
8
8
  # This workflow contains a single job "rspec"
@@ -12,7 +12,7 @@ jobs:
12
12
 
13
13
  strategy:
14
14
  matrix:
15
- ruby_version: [ 2.6, 2.7, 3.0 ]
15
+ ruby_version: [2.6, 2.7, 3.0, 3.1, 3.2]
16
16
 
17
17
  # Steps represent a sequence of tasks that will be executed as part of the job
18
18
  steps:
@@ -36,6 +36,6 @@ jobs:
36
36
  key: ${{ runner.os }}-${{ matrix.ruby_version }}-gems-${{ hashFiles('**/Gemfile.lock') }}
37
37
  restore-keys: |
38
38
  ${{ runner.os }}-${{ matrix.ruby_version }}-gems-
39
-
39
+
40
40
  - name: Run RSpec
41
41
  run: bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.0 (April 16th, 2023)
4
+
5
+ - Removal of deprecated calls to #to_graphql, replacing them with #to_type_signature that was added in graphql-ruby 1.8.3 (https://github.com/khamusa/rspec-graphql_matchers/pull/43 @RobinDaugherty)
6
+ - Dropped support for legacy .define API
7
+ - Dropped support to old relay interfaces
8
+ - Fixed with_hash_key matcher for newer versions of graphql-ruby
9
+ - Fixed errors that occured in some edge cases when generating descriptions for accept_argument and have_a_field matchers
10
+ - Documentations improvement and general cleanup
11
+ - Dropped support to graphql-ruby versions before 1.10.12.
12
+
3
13
  ## 1.3.1 (Aug 2nd, 2021)
14
+
4
15
  - Corrected gem dependencies so it properly requires RSpec when loaded (thanks to @itay-grudev)
5
16
 
6
17
  ## 1.3.0 (May 7th, 2020)
data/Gemfile CHANGED
@@ -4,11 +4,3 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in rspec-graphql_matchers.gemspec
6
6
  gemspec
7
-
8
- # rubocop:disable Bundle/DuplicatedGem
9
- if ENV['GRAPHQL_GEM_VERSION'] == '1.8'
10
- gem 'graphql', '~> 1.8.0'
11
- elsif ENV['GRAPHQL_GEM_VERSION'] == '1.9'
12
- gem 'graphql', '~> 1.9.0'
13
- end
14
- # rubocop:enable Bundle/DuplicatedGem
data/README.md CHANGED
@@ -25,12 +25,7 @@ Where a valid type for the expectation is either:
25
25
 
26
26
  - A reference to the actual type you expect;
27
27
  - [Recommended] A String representation of a type: `"String!"`, `"Int!"`, `"[String]!"`
28
- (note the exclamation mark at the end, as required by the [GraphQL specs](http://graphql.org/).
29
-
30
- For objects defined with the legacy `#define` api, testing `:property`, `:hash_key` and _metadata_ is also possible by chaining `.with_property`, `.with_hash_key` and `.with_metadata`. For example:
31
-
32
- - `expect(a_graphql_object).to have_a_field(field_name).with_property(property_name).with_metadata(metadata_hash)`
33
- - `expect(a_graphql_object).to have_a_field(field_name).with_hash_key(hash_key)`
28
+ (note the exclamation mark at the end, as required by the [GraphQL specifications](http://graphql.org/).
34
29
 
35
30
  ## Examples
36
31
 
@@ -41,7 +36,7 @@ class PostType < GraphQL::Schema::Object
41
36
  graphql_name "Post"
42
37
  description "A blog post"
43
38
 
44
- implements GraphQL::Relay::Node.interface
39
+ implements GraphQL::Types::Relay::Node
45
40
 
46
41
  field :id, ID, null: false
47
42
  field :comments, [String], null: false
@@ -97,27 +92,7 @@ describe PostType do
97
92
  end
98
93
  ```
99
94
 
100
- ### 3) For objects defined using the legacy `#define` api, you can also use `with_property`, `with_hash_key` and `with_metadata`:
101
-
102
- ```ruby
103
- PostTypeWithDefineApi = GraphQL::ObjectType.define do
104
- name "DefinedPost"
105
-
106
- interfaces [GraphQL::Relay::Node.interface]
107
-
108
- field :id, !types.ID, property: :post_id
109
- field :comments, !types[types.String], hash_key: :post_comments
110
- field :isPublished, admin_only: true
111
- end
112
-
113
- describe PostTypeWithDefineApi do
114
- it { is_expected.to have_a_field(:id).of_type('ID!').with_property(:post_id) }
115
- it { is_expected.to have_a_field(:comments).with_hash_key(:post_comments) }
116
- it { is_expected.to have_a_field(:isPublished).with_metadata(admin_only: true) }
117
- end
118
- ```
119
-
120
- ### 4) Test the arguments accepted by a field with `accept_argument` matcher:
95
+ ### 3) Test the arguments accepted by a field with `accept_argument` matcher:
121
96
 
122
97
  ```ruby
123
98
  describe PostType do
@@ -138,7 +113,7 @@ describe PostType do
138
113
  end
139
114
  ```
140
115
 
141
- ### 5) Test an object's interface implementations:
116
+ ### 4) Test an object's interface implementations:
142
117
 
143
118
  ```ruby
144
119
  describe PostType do
@@ -149,12 +124,12 @@ describe PostType do
149
124
  end
150
125
 
151
126
  # Accepts arguments as an array and type objects directly
152
- it { is_expected.to implement(GraphQL::Relay::Node.interface) }
127
+ it { is_expected.to implement(GraphQL::Types::Relay::Node) }
153
128
  it { is_expected.not_to implement('OtherInterface') }
154
129
  end
155
130
  ```
156
131
 
157
- ### 6) Using camelize: false on field names
132
+ ### 5) Using camelize: false on field names
158
133
 
159
134
  By default the graphql gem camelizes field names. This gem deals with it transparently:
160
135
 
@@ -162,7 +137,7 @@ By default the graphql gem camelizes field names. This gem deals with it transpa
162
137
  class ObjectMessingWithCamelsAndSnakesType < GraphQL::Schema::Object
163
138
  graphql_name 'ObjectMessingWithCamelsAndSnakes'
164
139
 
165
- implements GraphQL::Relay::Node.interface
140
+ implements GraphQL::Types::Relay::Node
166
141
 
167
142
  field :me_gusta_los_camellos, ID, null: false
168
143
 
@@ -59,11 +59,11 @@ module RSpec
59
59
  private
60
60
 
61
61
  def descriptions
62
- @results.map(&:description)
62
+ results.map(&:description)
63
63
  end
64
64
 
65
65
  def failure_messages
66
- @results.map(&:failure_message)
66
+ results.map(&:failure_message)
67
67
  end
68
68
 
69
69
  def field_arguments
@@ -74,6 +74,10 @@ module RSpec
74
74
  'matcher. It does not seem to be a valid GraphQL object type.'
75
75
  end
76
76
  end
77
+
78
+ def results
79
+ @results ||= []
80
+ end
77
81
  end
78
82
  end
79
83
  end
@@ -16,7 +16,7 @@ module RSpec
16
16
  end
17
17
 
18
18
  def type_name(a_type)
19
- a_type = a_type.to_graphql if a_type.respond_to?(:to_graphql)
19
+ a_type = a_type.to_type_signature if a_type.respond_to?(:to_type_signature)
20
20
 
21
21
  a_type.to_s
22
22
  end
@@ -28,9 +28,9 @@ module RSpec
28
28
  private
29
29
 
30
30
  def to_graphql(field_sample)
31
- return field_sample unless field_sample.respond_to?(:to_graphql)
31
+ return field_sample unless field_sample.respond_to?(:to_type_signature)
32
32
 
33
- field_sample.to_graphql
33
+ field_sample.to_type_signature
34
34
  end
35
35
  end
36
36
  end
@@ -80,16 +80,16 @@ module RSpec
80
80
  field = field_collection[@expected_field_name]
81
81
  field ||= field_collection[@expected_camel_field_name]
82
82
 
83
- field.respond_to?(:to_graphql) ? field.to_graphql : field
83
+ field.respond_to?(:to_type_signature) ? field.to_type_signature : field
84
84
  end
85
85
  end
86
86
 
87
87
  def descriptions
88
- @results.map(&:description)
88
+ results.map(&:description)
89
89
  end
90
90
 
91
91
  def failure_messages
92
- @results.map(&:failure_message)
92
+ results.map(&:failure_message)
93
93
  end
94
94
 
95
95
  def field_collection
@@ -108,6 +108,10 @@ module RSpec
108
108
  when :return_fields then 'have_a_return_field'
109
109
  end
110
110
  end
111
+
112
+ def results
113
+ @results ||= []
114
+ end
111
115
  end
112
116
  end
113
117
  end
@@ -28,7 +28,11 @@ module RSpec
28
28
  return actual_field.hash_key.to_sym if actual_field.hash_key
29
29
  end
30
30
 
31
- actual_field.metadata[:type_class].method_sym
31
+ if actual_field.respond_to?(:metadata)
32
+ return actual_field.metadata[:type_class].method_sym
33
+ end
34
+
35
+ actual_field.method_sym
32
36
  end
33
37
  end
34
38
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Rspec
4
4
  module GraphqlMatchers
5
- VERSION = '1.3.1'.freeze
5
+ VERSION = '1.4.0'.freeze
6
6
  end
7
7
  end
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ['lib']
27
27
 
28
- spec.add_dependency 'graphql', '>= 1.8', '< 2.0'
28
+ spec.add_dependency 'graphql', '>= 1.10.12', '< 2.0'
29
29
  spec.add_dependency 'rspec', '~> 3.0'
30
30
  spec.add_development_dependency 'bundler', '~> 2.0'
31
31
  # CodeClimate does not yet support SimpleCov 0.18
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-graphql_matchers
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Brandão
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-11 00:00:00.000000000 Z
11
+ date: 2023-04-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.8'
19
+ version: 1.10.12
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '2.0'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '1.8'
29
+ version: 1.10.12
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '2.0'
@@ -100,7 +100,7 @@ dependencies:
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0.71'
103
- description:
103
+ description:
104
104
  email:
105
105
  - gb.samuel@gmail.com
106
106
  executables: []
@@ -141,7 +141,7 @@ homepage: https://github.com/khamusa/rspec-graphql_matchers
141
141
  licenses:
142
142
  - MIT
143
143
  metadata: {}
144
- post_install_message:
144
+ post_install_message:
145
145
  rdoc_options: []
146
146
  require_paths:
147
147
  - lib
@@ -156,8 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  requirements: []
159
- rubygems_version: 3.2.5
160
- signing_key:
159
+ rubygems_version: 3.3.7
160
+ signing_key:
161
161
  specification_version: 4
162
162
  summary: Collection of rspec matchers to test your graphQL api schema.
163
163
  test_files: []