Skip to content

Commit dae519b

Browse files
authored
Merge pull request #4491 from rmosolgo/fix-lookahead-null-warden
Fix Lookahead with AlwaysVisible
2 parents 8a8b5e3 + 57fc5c4 commit dae519b

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

lib/graphql/schema/warden.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,13 @@ def visible_enum_value?(enum_value, _ctx = nil); true; end
9999
def visible_type_membership?(type_membership, _ctx = nil); true; end
100100
def interface_type_memberships(obj_type, _ctx = nil); obj_type.interface_type_memberships; end
101101
def get_type(type_name); @schema.get_type(type_name); end # rubocop:disable Development/ContextIsPassedCop
102-
def arguments(argument_owner, ctx = nil); argument_owner.arguments(ctx).values; end
102+
def arguments(argument_owner, ctx = nil); argument_owner.all_argument_definitions; end
103103
def enum_values(enum_defn); enum_defn.enum_values; end # rubocop:disable Development/ContextIsPassedCop
104104
def get_argument(parent_type, argument_name); parent_type.get_argument(argument_name); end # rubocop:disable Development/ContextIsPassedCop
105105
def types; @schema.types; end # rubocop:disable Development/ContextIsPassedCop
106106
def root_type_for_operation(op_name); @schema.root_type_for_operation(op_name); end
107107
def directives; @schema.directives.values; end
108-
def fields(type_defn); type_defn.fields; end # rubocop:disable Development/ContextIsPassedCop
108+
def fields(type_defn); type_defn.all_field_definitions; end # rubocop:disable Development/ContextIsPassedCop
109109
def get_field(parent_type, field_name); @schema.get_field(parent_type, field_name); end
110110
def reachable_type?(type_name); true; end
111111
def reachable_types; @schema.types.values; end # rubocop:disable Development/ContextIsPassedCop

spec/graphql/execution/lookahead_spec.rb

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ class Schema < GraphQL::Schema
102102
query(Query)
103103
instrument :query, LookaheadInstrumenter
104104
end
105+
106+
class AlwaysVisibleSchema < Schema
107+
use GraphQL::Schema::AlwaysVisible
108+
end
105109
end
106110

107111
describe "looking ahead" do
@@ -118,8 +122,9 @@ class Schema < GraphQL::Schema
118122
}
119123
GRAPHQL
120124
}
125+
let(:schema) { LookaheadTest::Schema }
121126
let(:query) {
122-
GraphQL::Query.new(LookaheadTest::Schema, document: document, variables: { name: "Cardinal" })
127+
GraphQL::Query.new(schema, document: document, variables: { name: "Cardinal" })
123128
}
124129

125130
it "has a good test setup" do
@@ -139,6 +144,18 @@ class Schema < GraphQL::Schema
139144
assert_equal true, query.lookahead.selects?("__typename")
140145
end
141146

147+
describe "with a NullWarden" do
148+
let(:schema) { LookaheadTest::AlwaysVisibleSchema }
149+
150+
it "works" do
151+
lookahead = query.lookahead.selection("findBirdSpecies")
152+
assert_equal true, lookahead.selects?("similarSpecies")
153+
assert_equal true, lookahead.selects?(:similar_species)
154+
assert_equal false, lookahead.selects?("isWaterfowl")
155+
assert_equal false, lookahead.selects?(:is_waterfowl)
156+
end
157+
end
158+
142159
describe "on unions" do
143160
let(:document) {
144161
GraphQL.parse <<-GRAPHQL

0 commit comments

Comments
 (0)