shoulda-matchers-graphql 0.1.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1dda9cb6eba5cb1129c6905dbd6c3d34ab2ac4d1482adf5e8500f713e9c92451
4
+ data.tar.gz: d8220c29706785d25188e044e70b66b75a581bb6a544a843807847b1dbfca99a
5
+ SHA512:
6
+ metadata.gz: 0f359b8383ef1199057b61452833f765d3a2be457d339aa872a6cfac6083c834d9cffaed1167c29e3bca29af2a259c1689592169d7b215406aade3b803870715
7
+ data.tar.gz: 9ef6fe5fa26306af6ffd3f80223cda69daf844d1a5e80bb79dde73e08ebd09a959882355df7fc498b99677e3b996c6a64523ab2456264c677fa4978f103cc9b4
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.6.0
7
+ before_install: gem install bundler -v 1.17.2
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in shoulda-matchers-graphql.gemspec
6
+ gemspec
@@ -0,0 +1,52 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ shoulda-matchers-graphql (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activesupport (5.2.3)
10
+ concurrent-ruby (~> 1.0, >= 1.0.2)
11
+ i18n (>= 0.7, < 2)
12
+ minitest (~> 5.1)
13
+ tzinfo (~> 1.1)
14
+ concurrent-ruby (1.1.5)
15
+ diff-lcs (1.3)
16
+ i18n (1.6.0)
17
+ concurrent-ruby (~> 1.0)
18
+ minitest (5.11.3)
19
+ rake (10.5.0)
20
+ rspec (3.8.0)
21
+ rspec-core (~> 3.8.0)
22
+ rspec-expectations (~> 3.8.0)
23
+ rspec-mocks (~> 3.8.0)
24
+ rspec-core (3.8.0)
25
+ rspec-support (~> 3.8.0)
26
+ rspec-expectations (3.8.3)
27
+ diff-lcs (>= 1.2.0, < 2.0)
28
+ rspec-support (~> 3.8.0)
29
+ rspec-mocks (3.8.0)
30
+ diff-lcs (>= 1.2.0, < 2.0)
31
+ rspec-support (~> 3.8.0)
32
+ rspec-support (3.8.0)
33
+ shoulda-matchers (4.0.1)
34
+ activesupport (>= 4.2.0)
35
+ thread_safe (0.3.6)
36
+ tzinfo (1.2.5)
37
+ thread_safe (~> 0.1)
38
+ yard (0.9.19)
39
+
40
+ PLATFORMS
41
+ ruby
42
+
43
+ DEPENDENCIES
44
+ bundler (~> 1.17)
45
+ rake (~> 10.0)
46
+ rspec (~> 3.0)
47
+ shoulda-matchers (~> 4.0.1)
48
+ shoulda-matchers-graphql!
49
+ yard
50
+
51
+ BUNDLED WITH
52
+ 1.17.2
@@ -0,0 +1,85 @@
1
+ # Shoulda::Matchers::Graphql
2
+
3
+ Shoulda-style matchers for GraphQL.
4
+
5
+ Note: not affiliated with [Thoughtbot's `Shoulda::Matchers`](https://github.com/thoughtbot/shoulda-matchers), but heavily inspired by and grateful for.
6
+
7
+ Another Note: This library works with or without `Shoulda::Matchers` in a project.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'shoulda-matchers-graphql'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ Or install it yourself as:
22
+
23
+ $ gem install shoulda-matchers-graphql
24
+
25
+ ## Usage
26
+
27
+ Configure RSpec:
28
+
29
+ ```ruby
30
+ RSpec.configure do |config|
31
+ config.include(Shoulda::Matchers::Graphql)
32
+ end
33
+ ```
34
+
35
+ Use the matchers:
36
+
37
+ ```ruby
38
+ class Types::Post < GraphQL::Schema::Object
39
+ description "This is a Types::Post"
40
+ field :id, ID, "ID description", null: false
41
+ field :text, String, null: false
42
+ field :author, Types::Author, null: false # defined elsewhere
43
+ field :comments, [Types::Comment], null: true # defined elsewhere
44
+ end
45
+
46
+ class Types::QueryType < GraphQL::Schema::Object
47
+ field :post, Types::Post, null: true do
48
+ argument :id, ID, required: true
49
+ end
50
+ end
51
+
52
+ RSpec.describe Types::Post do
53
+ context "type and field matchers" do
54
+ subject { Types::Post }
55
+ it { should have_description("This is a Types::Post")}
56
+ it { should define_field("id").of_type(:ID).required.with_description("ID Description") }
57
+ it { should define_field("text").of_type(String).required }
58
+ it { should define_field("author").of_type(Types::Author).required }
59
+ it { should define_field("comments").of_type([Types::Comment]).optional }
60
+ end
61
+ context "argument matchers" do
62
+ subject { Types::QueryType }
63
+ it { should define_field("post").with_arguments(id: { required: true }) }
64
+ end
65
+ context "schema matchers" do
66
+ subject { Schema }
67
+ it { should define_query_type(Types::QueryType) }
68
+ it { should define_mutation_type(Types::MutationType) }
69
+ it { should define_subscription_type(Types::SubscriptionType) }
70
+ it { should have_max_depth(200) }
71
+ end
72
+ end
73
+ ```
74
+
75
+ ## Development
76
+
77
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
78
+
79
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
80
+
81
+ ## Contributing
82
+
83
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ni3t/shoulda-matchers-graphql.
84
+
85
+
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "shoulda/matchers/graphql"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,14 @@
1
+ require "shoulda/matchers/graphql/version"
2
+ require "shoulda/matchers/graphql/fields"
3
+ require "shoulda/matchers/graphql/types"
4
+ require "shoulda/matchers/graphql/schema"
5
+
6
+ module Shoulda
7
+ module Matchers
8
+ # This module provides matchers for GraphQL
9
+
10
+ module Graphql
11
+ class Error < StandardError; end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ require_relative "fields/field_matcher"
2
+ require_relative "fields/define_field"
3
+ require_relative "fields/of_type"
4
+ require_relative "fields/optional"
5
+ require_relative "fields/required"
6
+ require_relative "fields/with_arguments"
7
+ require_relative "fields/with_description"
@@ -0,0 +1,55 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ # The 'define_field' matcher is the starting point for field-level validations.
6
+ #
7
+ # class PostType < GraphQL::Schema::Object
8
+ # field :some_field, String, null: false
9
+ # end
10
+ #
11
+ # #RSpec
12
+ # RSpec.describe PostType do
13
+ # it { should have_field("some_field") }
14
+ # end
15
+ #
16
+ # ## Qualifiers
17
+ #
18
+ # ### `of_type`
19
+ #
20
+ # Use `of_type` if you want to test the return type of the field
21
+ #
22
+ # class PostType < GraphQL::Schema::Object
23
+ # field :some_field, String, null: false
24
+ # end
25
+ #
26
+ # #RSpec
27
+ # RSpec.describe PostType do
28
+ # it { should have_field("some_field").of_type(String) }
29
+ # end
30
+ #
31
+
32
+ def define_field(field_name)
33
+ DefineField.new(field_name)
34
+ end
35
+
36
+ class DefineField < FieldMatcher
37
+ attr_accessor :field_name
38
+
39
+ def initialize(field_name)
40
+ super
41
+ end
42
+
43
+ def matches?(subject)
44
+ super(subject)
45
+ subject.respond_to?(:fields) && !subject.fields[field_name].nil?
46
+ end
47
+
48
+ def description
49
+ "define field '#@field_name'"
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,45 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ class FieldMatcher
6
+ attr_reader :field_name
7
+
8
+ def initialize(field_name)
9
+ @field_name = field_name
10
+ @subject = nil
11
+ end
12
+
13
+ def description
14
+ "define field #@field_name"
15
+ end
16
+
17
+ def matches?(subject)
18
+ @subject = subject
19
+ self
20
+ end
21
+
22
+ def of_type(type_name)
23
+ OfType.new(@field_name, type_name)
24
+ end
25
+
26
+ def optional
27
+ Optional.new(@field_name)
28
+ end
29
+
30
+ def required
31
+ Required.new(@field_name)
32
+ end
33
+
34
+ def with_description(field_description)
35
+ WithDescription.new(@field_name, field_description)
36
+ end
37
+
38
+ def with_arguments(argument_hash)
39
+ WithArguments.new(@field_name, argument_hash)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,33 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ class OfType < FieldMatcher
6
+ attr_accessor :type_name
7
+
8
+ def initialize(field_name, type_name)
9
+ super(field_name)
10
+ @type_name = type_name == :ID ? "ID" : type_name
11
+ end
12
+
13
+ def matches?(subject)
14
+ super(subject)
15
+ subject_return_type == type_name
16
+ end
17
+
18
+ def description
19
+ super + ", of type #@type_name"
20
+ end
21
+
22
+ def failure_message
23
+ "expected '#@field_name' to be of type #@type_name, but it was #{subject_return_type} instead"
24
+ end
25
+
26
+ def subject_return_type
27
+ @subject.fields[@field_name].instance_variable_get("@return_type_expr")
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ class Optional < FieldMatcher
6
+ def initialize(field_name)
7
+ super
8
+ end
9
+
10
+ def matches?(subject)
11
+ subject.fields[@field_name].type.class != GraphQL::Schema::NonNull
12
+ end
13
+
14
+ def failure_message
15
+ "expected #@field_name to be nullable, but it is not nullable."
16
+ end
17
+
18
+ def description
19
+ super + ", optional"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,26 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ class Required < FieldMatcher
6
+ def initialize(field_name)
7
+ super
8
+ end
9
+
10
+ def matches?(subject)
11
+ super(subject)
12
+ @subject.fields[@field_name].type.class == GraphQL::Schema::NonNull
13
+ end
14
+
15
+ def description
16
+ super + ", required"
17
+ end
18
+
19
+ def failure_message
20
+ "expected '#{@subject.fields[@field_name]}' to be required, but it was not."
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,48 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ class WithArguments < FieldMatcher
6
+ def initialize(field_name, **args)
7
+ super(field_name)
8
+ @arguments = *args
9
+ end
10
+
11
+ def matches?(subject)
12
+ super(subject)
13
+ @arguments.map do |k, v|
14
+ tokens = k.to_s.split("_")
15
+ first, *rem = tokens
16
+ rem = rem.map(&:capitalize)
17
+ camelized = first + rem.join
18
+ if field_arguments[camelized].nil?
19
+ return false
20
+ end
21
+ #TODO: additional options checks, refactor into own module
22
+ if !v[:required].nil?
23
+ required = v[:required]
24
+ nullable = field_arguments[camelized].instance_variable_get("@null")
25
+ required == !nullable
26
+ else
27
+ true
28
+ end
29
+ end.all?
30
+ end
31
+
32
+ def description
33
+ args = @arguments.join(", ")
34
+ super + ", with argument(s) #{args}"
35
+ end
36
+
37
+ def field_arguments
38
+ @subject.fields[@field_name].instance_variable_get("@own_arguments")
39
+ end
40
+
41
+ def failure_message
42
+ "oops"
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,31 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Fields
5
+ class WithDescription < FieldMatcher
6
+ def initialize(field_name, field_description)
7
+ super(field_name)
8
+ @field_description = field_description
9
+ end
10
+
11
+ def matches?(subject)
12
+ super(subject)
13
+ subject_description.to_s == @field_description.to_s
14
+ end
15
+
16
+ def description
17
+ super + ", with description #@field_description"
18
+ end
19
+
20
+ def failure_message
21
+ "expected the field_description to be '#@field_description', but it was '#{subject_description}' instead."
22
+ end
23
+
24
+ def subject_description
25
+ @subject.fields[@field_name].description
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,2 @@
1
+ require_relative "schema/schema_matcher"
2
+ require_relative "schema/define_query_type"
@@ -0,0 +1,36 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Schema
5
+ def define_query_type(query_type)
6
+ DefineQueryType.new(query_type)
7
+ end
8
+
9
+ class DefineQueryType < SchemaMatcher
10
+ attr_accessor :query_type
11
+
12
+ def initialize(query_type)
13
+ @query_type = query_type
14
+ end
15
+
16
+ def matches?(subject)
17
+ super(subject)
18
+ subject_query_type == query_type
19
+ end
20
+
21
+ def failure_message
22
+ "expected Schema to have query type #@query_type, but it was #{subject_query_type}"
23
+ end
24
+
25
+ def description
26
+ "define query type #@query_type"
27
+ end
28
+
29
+ def subject_query_type
30
+ @subject.instance_variable_get("@query_object")
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,18 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Schema
5
+ class SchemaMatcher
6
+ def initialize
7
+ @subject = nil
8
+ end
9
+
10
+ def matches?(subject)
11
+ @subject = subject
12
+ self
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,2 @@
1
+ require_relative "types/type_matcher"
2
+ require_relative "types/have_description"
@@ -0,0 +1,32 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Types
5
+ def have_description(type_description)
6
+ HaveDescription.new(type_description)
7
+ end
8
+
9
+ class HaveDescription < TypeMatcher
10
+ attr_accessor :type_description
11
+
12
+ def initialize(type_description)
13
+ @type_description = type_description
14
+ end
15
+
16
+ def matches?(subject)
17
+ super(subject)
18
+ @subject.description == type_description
19
+ end
20
+
21
+ def description
22
+ "have description '#@type_description'"
23
+ end
24
+
25
+ def failure_message
26
+ "expected #@subject to have description '#@type_description', but it was '#{@subject.description}'"
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,20 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ module Types
5
+ class TypeMatcher
6
+ attr_reader :type
7
+
8
+ def initialize
9
+ @subject = nil
10
+ end
11
+
12
+ def matches?(subject)
13
+ @subject = subject
14
+ self
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ module Shoulda
2
+ module Matchers
3
+ module Graphql
4
+ VERSION = "0.1.0"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,32 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "shoulda/matchers/graphql/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "shoulda-matchers-graphql"
8
+ spec.version = Shoulda::Matchers::Graphql::VERSION
9
+ spec.authors = ["Nick Bell"]
10
+ spec.email = ["bell.nicholas.p@gmail.com"]
11
+ spec.licenses = ["MIT"]
12
+
13
+ spec.summary = %q{Shoulda style matchers for GraphQL}
14
+ spec.description = %q{Shoulda style matchers for GraphQL...}
15
+ spec.homepage = "https://github.com/ni3t/shoulda-matchers-graphql"
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_development_dependency "bundler", "~> 1.17"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rspec", "~> 3.0"
29
+ spec.add_development_dependency "yard", "~> 0.9.19"
30
+
31
+ spec.add_development_dependency "shoulda-matchers", "~> 4.0.1"
32
+ end
metadata ADDED
@@ -0,0 +1,139 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shoulda-matchers-graphql
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Nick Bell
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-04-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: yard
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.19
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.9.19
69
+ - !ruby/object:Gem::Dependency
70
+ name: shoulda-matchers
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 4.0.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 4.0.1
83
+ description: Shoulda style matchers for GraphQL...
84
+ email:
85
+ - bell.nicholas.p@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - Gemfile
94
+ - Gemfile.lock
95
+ - README.md
96
+ - Rakefile
97
+ - bin/console
98
+ - bin/setup
99
+ - lib/shoulda/matchers/graphql.rb
100
+ - lib/shoulda/matchers/graphql/fields.rb
101
+ - lib/shoulda/matchers/graphql/fields/define_field.rb
102
+ - lib/shoulda/matchers/graphql/fields/field_matcher.rb
103
+ - lib/shoulda/matchers/graphql/fields/of_type.rb
104
+ - lib/shoulda/matchers/graphql/fields/optional.rb
105
+ - lib/shoulda/matchers/graphql/fields/required.rb
106
+ - lib/shoulda/matchers/graphql/fields/with_arguments.rb
107
+ - lib/shoulda/matchers/graphql/fields/with_description.rb
108
+ - lib/shoulda/matchers/graphql/schema.rb
109
+ - lib/shoulda/matchers/graphql/schema/define_query_type.rb
110
+ - lib/shoulda/matchers/graphql/schema/schema_matcher.rb
111
+ - lib/shoulda/matchers/graphql/types.rb
112
+ - lib/shoulda/matchers/graphql/types/have_description.rb
113
+ - lib/shoulda/matchers/graphql/types/type_matcher.rb
114
+ - lib/shoulda/matchers/graphql/version.rb
115
+ - shoulda-matchers-graphql.gemspec
116
+ homepage: https://github.com/ni3t/shoulda-matchers-graphql
117
+ licenses:
118
+ - MIT
119
+ metadata: {}
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - ">="
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubygems_version: 3.0.1
136
+ signing_key:
137
+ specification_version: 4
138
+ summary: Shoulda style matchers for GraphQL
139
+ test_files: []