lib/graphql/schema/interface.rb in graphql-1.10.0.pre1 vs lib/graphql/schema/interface.rb in graphql-1.10.0.pre2
- old
+ new
@@ -5,10 +5,11 @@
include GraphQL::Schema::Member::GraphQLTypeNames
module DefinitionMethods
include GraphQL::Schema::Member::CachedGraphQLDefinition
include GraphQL::Relay::TypeExtensions
include GraphQL::Schema::Member::BaseDSLMethods
+ # ConfigurationExtension's responsibilities are in `def included` below
include GraphQL::Schema::Member::TypeSystemHelpers
include GraphQL::Schema::Member::HasFields
include GraphQL::Schema::Member::HasPath
include GraphQL::Schema::Member::RelayShortcuts
include GraphQL::Schema::Member::Scoped
@@ -19,18 +20,13 @@
# - Added as class methods to all child interfaces
def definition_methods(&block)
self::DefinitionMethods.module_eval(&block)
end
- # The interface is visible if any of its possible types are visible
+ # @see {Schema::Warden} hides interfaces without visible implementations
def visible?(context)
- context.schema.possible_types(self).each do |type|
- if context.schema.visible?(type, context)
- return true
- end
- end
- false
+ true
end
# The interface is accessible if any of its possible types are accessible
def accessible?(context)
context.schema.possible_types(self).each do |type|
@@ -61,9 +57,14 @@
if !child_class.instance_variable_defined?(:@_definition_methods)
defn_methods_module = Module.new
child_class.instance_variable_set(:@_definition_methods, defn_methods_module)
child_class.const_set(:DefinitionMethods, defn_methods_module)
child_class.extend(child_class::DefinitionMethods)
+ end
+ child_class.introspection(introspection)
+ child_class.description(description)
+ if overridden_graphql_name
+ child_class.graphql_name(overridden_graphql_name)
end
elsif child_class < GraphQL::Schema::Object
# This is being included into an object type, make sure it's using `implements(...)`
backtrace_line = caller(0, 10).find { |line| line.include?("schema/object.rb") && line.include?("in `implements'")}
if !backtrace_line