Skip to content

Commit 4b3e128

Browse files
authored
Merge pull request #49 from gjtorikian/accept-a-schema
Accept a schema
2 parents ac1a639 + 9597cda commit 4b3e128

File tree

8 files changed

+51
-12
lines changed

8 files changed

+51
-12
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@
1111
/test/graphql-docs/fixtures/output/
1212
/.sass-cache/
1313
/output/
14+
.byebug_history

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ GraphQLDocs.build(filename: filename)
2828

2929
# or pass in a string
3030
GraphQLDocs.build(schema: contents)
31+
32+
# or a schema class
33+
schema = GraphQL::Schema.define do
34+
query query_type
35+
end
36+
GraphQLDocs.build(schema: schema)
3137
```
3238

3339
## Breakdown

Rakefile

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,15 @@ task default: :test
1717
Rake::Task[:test].enhance { Rake::Task[:html_proofer].invoke }
1818

1919
desc 'Invoke HTML-Proofer'
20-
task html_proofer: [:generate_sample] do
21-
require 'html-proofer'
22-
output_dir = File.join(File.dirname(__FILE__), 'output')
23-
24-
proofer_options = { disable_external: true, assume_extension: true }
25-
HTMLProofer.check_directory(output_dir, proofer_options).run
20+
task :html_proofer do
21+
if ENV['CI']
22+
Rake::Task[:generate_sample].invoke('https://www.gjtorikian.com/graphql-docs')
23+
require 'html-proofer'
24+
output_dir = File.join(File.dirname(__FILE__), 'output')
25+
26+
proofer_options = { disable_external: true, assume_extension: true }
27+
HTMLProofer.check_directory(output_dir, proofer_options).run
28+
end
2629
end
2730

2831
desc 'Set up a console'

graphql-docs.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Gem::Specification.new do |spec|
3333
spec.add_development_dependency 'html-proofer', '~> 3.4'
3434
spec.add_development_dependency 'minitest', '~> 5.0'
3535
spec.add_development_dependency 'minitest-focus', '~> 1.1'
36-
spec.add_development_dependency 'pry', '~> 0.10.0'
36+
spec.add_development_dependency 'pry-byebug', '~> 3.6'
3737
spec.add_development_dependency 'rake'
3838
spec.add_development_dependency 'rubocop-github'
3939
spec.add_development_dependency 'webmock', '~> 2.3'

lib/graphql-docs.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# rubocop:disable Style/FileName
1+
# rubocop:disable Naming/FileName
22
require 'graphql-docs/helpers'
33
require 'graphql-docs/renderer'
44
require 'graphql-docs/configuration'
@@ -38,8 +38,8 @@ def build(options)
3838

3939
schema = File.read(filename)
4040
else
41-
unless schema.is_a?(String)
42-
raise TypeError, "Expected `String`, got `#{schema.class}`"
41+
if !schema.is_a?(String) && !schema.is_a?(GraphQL::Schema)
42+
raise TypeError, "Expected `String` or `GraphQL::Schema`, got `#{schema.class}`"
4343
end
4444

4545
schema = schema

lib/graphql-docs/parser.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@ def initialize(schema, options)
1111

1212
@options[:notices] ||= -> (schema_member_path) { [] }
1313

14-
@schema = GraphQL::Schema.from_definition(schema)
14+
if schema.is_a?(GraphQL::Schema)
15+
@schema = schema
16+
else
17+
@schema = GraphQL::Schema.from_definition(schema)
18+
end
19+
1520
@processed_schema = {
1621
operation_types: [],
1722
mutation_types: [],

test/graphql-docs/graphql-docs_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# rubocop:disable Style/FileName
1+
# rubocop:disable Naming/FileName
22
require 'test_helper'
33

44
class GraphQLDocsTest < Minitest::Test

test/graphql-docs/parser_test.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,30 @@ def setup
88
@results = @parser.parse
99
end
1010

11+
def test_it_accepts_schema_class
12+
query_type = GraphQL::ObjectType.define do
13+
name 'Query'
14+
15+
field :test do
16+
type types.Int
17+
description "Title paragraph.
18+
```
19+
line1
20+
line2
21+
line3
22+
```"
23+
end
24+
end
25+
26+
schema = GraphQL::Schema.define do
27+
query query_type
28+
end
29+
30+
results = GraphQLDocs::Parser.new(schema, {}).parse
31+
assert_equal 'test', results[:operation_types][0][:fields][0][:name]
32+
assert_equal "Title paragraph.\n ```\n line1\n line2\n line3\n ```", results[:operation_types][0][:fields][0][:description]
33+
end
34+
1135
def test_types_are_sorted
1236
names = @results[:object_types].map { |t| t[:name] }
1337
assert_equal names.sort, names

0 commit comments

Comments
 (0)