graphql 1.9.1 → 1.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/graphql/schema/field.rb +18 -13
- data/lib/graphql/version.rb +1 -1
- data/spec/graphql/execution/lazy_spec.rb +7 -0
- data/spec/graphql/schema/member/scoped_spec.rb +25 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfc72228ed2ce65697195792c7e58ff2c061435d
|
4
|
+
data.tar.gz: 2ab1fa5308bb89c21319558620a705f5e58fbbdb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 650ef5ae621e294c2a5242206a0158d58970d40dfe5bace0f863a15e59a533324e2b2c623b7df0b089c2ffa8ebcc0b445b43fe5e3b6c0bb018a9a5a732c74fa2
|
7
|
+
data.tar.gz: 66d3f0113edbcf6562f9a430c59ae569bff7a9f444ced9c5e6fa2eb11a9095f192d57016126c0a69334cf6c58c8f23bffa2a5bafd83214453c205876d8a8e9f9
|
data/lib/graphql/schema/field.rb
CHANGED
@@ -277,15 +277,6 @@ module GraphQL
|
|
277
277
|
# Read the value
|
278
278
|
@extensions
|
279
279
|
else
|
280
|
-
if @resolve || @function
|
281
|
-
raise ArgumentError, <<-MSG
|
282
|
-
Extensions are not supported with resolve procs or functions,
|
283
|
-
but #{owner.name}.#{name} has: #{@resolve || @function}
|
284
|
-
So, it can't have extensions: #{extensions}.
|
285
|
-
Use a method or a Schema::Resolver instead.
|
286
|
-
MSG
|
287
|
-
end
|
288
|
-
|
289
280
|
# Normalize to a Hash of {name => options}
|
290
281
|
extensions_with_options = if new_extensions.last.is_a?(Hash)
|
291
282
|
new_extensions.pop
|
@@ -454,12 +445,16 @@ MSG
|
|
454
445
|
# @see https://github.com/rmosolgo/graphql-ruby/issues/1990 before removing
|
455
446
|
inner_obj = after_obj && after_obj.object
|
456
447
|
if authorized?(inner_obj, query_ctx)
|
448
|
+
ruby_args = to_ruby_args(after_obj, args, ctx)
|
457
449
|
# Then if it passed, resolve the field
|
458
450
|
if @resolve_proc
|
459
451
|
# Might be nil, still want to call the func in that case
|
460
|
-
|
452
|
+
with_extensions(inner_obj, ruby_args, query_ctx) do |extended_obj, extended_args|
|
453
|
+
# Pass the GraphQL args here for compatibility:
|
454
|
+
@resolve_proc.call(extended_obj, args, ctx)
|
455
|
+
end
|
461
456
|
else
|
462
|
-
public_send_field(after_obj,
|
457
|
+
public_send_field(after_obj, ruby_args, ctx)
|
463
458
|
end
|
464
459
|
else
|
465
460
|
err = GraphQL::UnauthorizedFieldError.new(object: inner_obj, type: obj.class, context: ctx, field: self)
|
@@ -568,7 +563,13 @@ MSG
|
|
568
563
|
|
569
564
|
NO_ARGS = {}.freeze
|
570
565
|
|
571
|
-
|
566
|
+
# Convert a GraphQL arguments instance into a Ruby-style hash.
|
567
|
+
#
|
568
|
+
# @param obj [GraphQL::Schema::Object] The object where this field is being resolved
|
569
|
+
# @param graphql_args [GraphQL::Query::Arguments]
|
570
|
+
# @param field_ctx [GraphQL::Query::Context::FieldResolutionContext]
|
571
|
+
# @return [Hash<Symbol => Any>]
|
572
|
+
def to_ruby_args(obj, graphql_args, field_ctx)
|
572
573
|
if graphql_args.any? || @extras.any?
|
573
574
|
# Splat the GraphQL::Arguments to Ruby keyword arguments
|
574
575
|
ruby_kwargs = graphql_args.to_kwargs
|
@@ -583,10 +584,14 @@ MSG
|
|
583
584
|
@extras.each do |extra_arg|
|
584
585
|
ruby_kwargs[extra_arg] = fetch_extra(extra_arg, field_ctx)
|
585
586
|
end
|
587
|
+
|
588
|
+
ruby_kwargs
|
586
589
|
else
|
587
|
-
|
590
|
+
NO_ARGS
|
588
591
|
end
|
592
|
+
end
|
589
593
|
|
594
|
+
def public_send_field(obj, ruby_kwargs, field_ctx)
|
590
595
|
query_ctx = field_ctx.query.context
|
591
596
|
with_extensions(obj, ruby_kwargs, query_ctx) do |extended_obj, extended_args|
|
592
597
|
if @resolver_class
|
data/lib/graphql/version.rb
CHANGED
@@ -10,6 +10,13 @@ describe GraphQL::Execution::Lazy do
|
|
10
10
|
assert_equal 3, res["data"]["int"]
|
11
11
|
end
|
12
12
|
|
13
|
+
it "Works with Query.new" do
|
14
|
+
query_str = '{ int(value: 2, plus: 1) }'
|
15
|
+
query = GraphQL::Query.new(LazyHelpers::LazySchema, query_str)
|
16
|
+
res = query.result
|
17
|
+
assert_equal 3, res["data"]["int"]
|
18
|
+
end
|
19
|
+
|
13
20
|
it "can do nested lazy values" do
|
14
21
|
res = run_query %|
|
15
22
|
{
|
@@ -57,8 +57,17 @@ describe GraphQL::Schema::Member::Scoped do
|
|
57
57
|
resolver_method: :items
|
58
58
|
field :french_items, [FrenchItem], null: false,
|
59
59
|
resolver_method: :items
|
60
|
-
|
61
|
-
|
60
|
+
if TESTING_INTERPRETER
|
61
|
+
field :items_connection, Item.connection_type, null: false,
|
62
|
+
resolver_method: :items
|
63
|
+
else
|
64
|
+
field :items_connection, Item.connection_type, null: false, resolve: ->(obj, args, ctx) {
|
65
|
+
[
|
66
|
+
OpenStruct.new(name: "Trombone"),
|
67
|
+
OpenStruct.new(name: "Paperclip"),
|
68
|
+
]
|
69
|
+
}
|
70
|
+
end
|
62
71
|
|
63
72
|
def items
|
64
73
|
[
|
@@ -67,9 +76,20 @@ describe GraphQL::Schema::Member::Scoped do
|
|
67
76
|
]
|
68
77
|
end
|
69
78
|
|
70
|
-
|
71
|
-
|
72
|
-
|
79
|
+
if TESTING_INTERPRETER
|
80
|
+
field :things, [Thing], null: false
|
81
|
+
def things
|
82
|
+
items + [OpenStruct.new(name: "Turbine")]
|
83
|
+
end
|
84
|
+
else
|
85
|
+
# Make sure it works with resolve procs, too
|
86
|
+
field :things, [Thing], null: false, resolve: ->(obj, args, ctx) {
|
87
|
+
[
|
88
|
+
OpenStruct.new(name: "Trombone"),
|
89
|
+
OpenStruct.new(name: "Paperclip"),
|
90
|
+
OpenStruct.new(name: "Turbine"),
|
91
|
+
]
|
92
|
+
}
|
73
93
|
end
|
74
94
|
end
|
75
95
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.9.
|
4
|
+
version: 1.9.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Mosolgo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: benchmark-ips
|