summaryrefslogtreecommitdiff
path: root/spec/support/helpers/graphql_helpers.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/support/helpers/graphql_helpers.rb')
-rw-r--r--spec/support/helpers/graphql_helpers.rb25
1 files changed, 23 insertions, 2 deletions
diff --git a/spec/support/helpers/graphql_helpers.rb b/spec/support/helpers/graphql_helpers.rb
index db769041f1e..a1b4e6eee92 100644
--- a/spec/support/helpers/graphql_helpers.rb
+++ b/spec/support/helpers/graphql_helpers.rb
@@ -17,8 +17,8 @@ module GraphqlHelpers
# ready, then the early return is returned instead.
#
# Then the resolve method is called.
- def resolve(resolver_class, obj: nil, args: {}, ctx: {}, field: nil)
- resolver = resolver_class.new(object: obj, context: ctx, field: field)
+ def resolve(resolver_class, args: {}, **resolver_args)
+ resolver = resolver_instance(resolver_class, **resolver_args)
ready, early_return = sync_all { resolver.ready?(**args) }
return early_return unless ready
@@ -26,6 +26,15 @@ module GraphqlHelpers
resolver.resolve(**args)
end
+ def resolver_instance(resolver_class, obj: nil, ctx: {}, field: nil, schema: GitlabSchema)
+ if ctx.is_a?(Hash)
+ q = double('Query', schema: schema)
+ ctx = GraphQL::Query::Context.new(query: q, object: obj, values: ctx)
+ end
+
+ resolver_class.new(object: obj, context: ctx, field: field)
+ end
+
# Eagerly run a loader's named resolver
# (syncs any lazy values returned by resolve)
def eager_resolve(resolver_class, **opts)
@@ -112,6 +121,16 @@ module GraphqlHelpers
end
end
+ def resolve_field(name, object, args = {})
+ context = double("Context",
+ schema: GitlabSchema,
+ query: GraphQL::Query.new(GitlabSchema),
+ parent: nil)
+ field = described_class.fields[name]
+ instance = described_class.authorized_new(object, context)
+ field.resolve_field(instance, {}, context)
+ end
+
# Recursively convert a Hash with Ruby-style keys to GraphQL fieldname-style keys
#
# prepare_input_for_mutation({ 'my_key' => 1 })
@@ -468,6 +487,8 @@ module GraphqlHelpers
use Gitlab::Graphql::Authorize
use Gitlab::Graphql::Pagination::Connections
+ lazy_resolve ::Gitlab::Graphql::Lazy, :force
+
query(query_type)
end