graphql 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/graphql.rb +46 -29
- data/lib/graphql/call.rb +1 -1
- data/lib/graphql/connection.rb +12 -35
- data/lib/graphql/field.rb +7 -177
- data/lib/graphql/field_definer.rb +5 -15
- data/lib/graphql/introspection/{call_node.rb → call_type.rb} +1 -1
- data/lib/graphql/introspection/field_type.rb +10 -0
- data/lib/graphql/introspection/{root_call_node.rb → root_call_type.rb} +6 -2
- data/lib/graphql/introspection/schema_type.rb +17 -0
- data/lib/graphql/introspection/{type_node.rb → type_type.rb} +4 -2
- data/lib/graphql/node.rb +118 -42
- data/lib/graphql/{parser.rb → parser/parser.rb} +9 -4
- data/lib/graphql/{transform.rb → parser/transform.rb} +4 -2
- data/lib/graphql/query.rb +33 -10
- data/lib/graphql/root_call.rb +26 -13
- data/lib/graphql/root_call_argument.rb +3 -1
- data/lib/graphql/root_call_argument_definer.rb +3 -7
- data/lib/graphql/schema/all.rb +46 -0
- data/lib/graphql/{schema.rb → schema/schema.rb} +27 -39
- data/lib/graphql/schema/schema_validation.rb +32 -0
- data/lib/graphql/syntax/fragment.rb +7 -0
- data/lib/graphql/syntax/query.rb +3 -2
- data/lib/graphql/types/boolean_type.rb +3 -0
- data/lib/graphql/types/number_type.rb +3 -0
- data/lib/graphql/types/object_type.rb +6 -0
- data/lib/graphql/types/string_type.rb +3 -0
- data/lib/graphql/version.rb +1 -1
- data/readme.md +46 -5
- data/spec/graphql/node_spec.rb +6 -5
- data/spec/graphql/{parser_spec.rb → parser/parser_spec.rb} +31 -2
- data/spec/graphql/{transform_spec.rb → parser/transform_spec.rb} +16 -2
- data/spec/graphql/query_spec.rb +27 -9
- data/spec/graphql/root_call_spec.rb +15 -1
- data/spec/graphql/{schema_spec.rb → schema/schema_spec.rb} +15 -50
- data/spec/graphql/schema/schema_validation_spec.rb +48 -0
- data/spec/support/nodes.rb +31 -28
- metadata +47 -47
- data/lib/graphql/introspection/field_node.rb +0 -19
- data/lib/graphql/introspection/schema_node.rb +0 -17
- data/lib/graphql/types/boolean_field.rb +0 -3
- data/lib/graphql/types/connection_field.rb +0 -30
- data/lib/graphql/types/cursor_field.rb +0 -9
- data/lib/graphql/types/number_field.rb +0 -3
- data/lib/graphql/types/object_field.rb +0 -8
- data/lib/graphql/types/string_field.rb +0 -3
- data/lib/graphql/types/type_field.rb +0 -6
- data/spec/graphql/field_spec.rb +0 -63
@@ -1,19 +0,0 @@
|
|
1
|
-
class GraphQL::Introspection::FieldNode < GraphQL::Node
|
2
|
-
exposes "GraphQL::Field"
|
3
|
-
field.string(:name)
|
4
|
-
field.string(:type)
|
5
|
-
field.string(:description)
|
6
|
-
field.connection(:calls)
|
7
|
-
|
8
|
-
def calls
|
9
|
-
target.calls.values
|
10
|
-
end
|
11
|
-
|
12
|
-
def name
|
13
|
-
schema_name
|
14
|
-
end
|
15
|
-
|
16
|
-
def type
|
17
|
-
value_type
|
18
|
-
end
|
19
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class GraphQL::Introspection::SchemaNode < GraphQL::Node
|
2
|
-
exposes "GraphQL::Schema"
|
3
|
-
field.connection(:calls)
|
4
|
-
field.connection(:types)
|
5
|
-
|
6
|
-
def cursor
|
7
|
-
"schema"
|
8
|
-
end
|
9
|
-
|
10
|
-
def types
|
11
|
-
@target.types.values
|
12
|
-
end
|
13
|
-
|
14
|
-
def calls
|
15
|
-
target.calls.values
|
16
|
-
end
|
17
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
class GraphQL::Types::ConnectionField < GraphQL::Field
|
2
|
-
type "connection"
|
3
|
-
|
4
|
-
["connection_class_name", "node_class_name"].each do |method_name|
|
5
|
-
define_method(method_name) do
|
6
|
-
const_get(method_name.upcase)
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
def connection_class
|
11
|
-
if connection_class_name.present?
|
12
|
-
Object.const_get(connection_class_name)
|
13
|
-
else
|
14
|
-
GraphQL::SCHEMA.get_connection(name)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def as_node
|
19
|
-
items = finished_value
|
20
|
-
connection_class.new(
|
21
|
-
items,
|
22
|
-
query: query,
|
23
|
-
fields: fields,
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
def as_result
|
28
|
-
as_node.as_result
|
29
|
-
end
|
30
|
-
end
|
data/spec/graphql/field_spec.rb
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'ostruct'
|
3
|
-
|
4
|
-
describe GraphQL::Field do
|
5
|
-
let(:owner) { OpenStruct.new(name: "TestOwner")}
|
6
|
-
let(:field) { GraphQL::Field.create_class(name: "high_fives", type: :number, owner_class: owner).new(query: {}) }
|
7
|
-
|
8
|
-
describe '#name' do
|
9
|
-
it 'is present' do
|
10
|
-
assert_equal field.name, "high_fives"
|
11
|
-
end
|
12
|
-
it 'defaults to name' do
|
13
|
-
assert_equal "high_fives", field.name
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe '.call' do
|
18
|
-
let(:content_field) { Nodes::PostNode.all_fields["content"] }
|
19
|
-
it 'doesnt register a call twice' do
|
20
|
-
assert_equal 3, content_field.calls.size
|
21
|
-
call = content_field.calls.first[1]
|
22
|
-
content_field.call(call.name, call.lambda)
|
23
|
-
content_field.call(call.name, call.lambda)
|
24
|
-
assert_equal 3, content_field.calls.size
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe '.to_s' do
|
29
|
-
it 'includes name' do
|
30
|
-
assert_match(/high_fives/, field.class.to_s)
|
31
|
-
end
|
32
|
-
it 'includes owner name' do
|
33
|
-
assert_match(/TestOwner/, field.class.to_s)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe '__type__' do
|
38
|
-
let(:query_string) { "type(post) { fields { edges { node { name, type, calls { edges { node { name } }} } } } } "}
|
39
|
-
let(:query) { GraphQL::Query.new(query_string, context: {}) }
|
40
|
-
let(:result) { query.as_result }
|
41
|
-
let(:id_field) { result["post"]["fields"]["edges"][1]["node"] }
|
42
|
-
let(:title_field) { result["post"]["fields"]["edges"][2]["node"] }
|
43
|
-
let(:comments_field) { result["post"]["fields"]["edges"][5]["node"] }
|
44
|
-
let(:content_field) { result["post"]["fields"]["edges"][3]["node"] }
|
45
|
-
|
46
|
-
it 'has name' do
|
47
|
-
assert_equal "id", id_field["name"]
|
48
|
-
assert_equal "title", title_field["name"]
|
49
|
-
assert_equal "comments", comments_field["name"]
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'has type' do
|
53
|
-
assert_equal "number", id_field["type"]
|
54
|
-
assert_equal "string", title_field["type"]
|
55
|
-
assert_equal "connection", comments_field["type"]
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'has calls' do
|
59
|
-
assert_equal 3, content_field["calls"]["edges"].length
|
60
|
-
assert_equal ["from", "for", "select"], content_field["calls"]["edges"].map {|c| c["node"]["name"] }
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|