debian-mirror-gitlab/spec/support/graphql/resolver_factories.rb
2022-07-23 20:15:48 +02:00

40 lines
978 B
Ruby

# frozen_string_literal: true
module Graphql
module ResolverFactories
def new_resolver(resolved_value = 'Resolved value', method: :resolve)
case method
when :resolve
simple_resolver(resolved_value)
when :find_object
find_object_resolver(resolved_value)
else
raise "Cannot build a resolver for #{method}"
end
end
private
def simple_resolver(resolved_value = 'Resolved value', base_class: Resolvers::BaseResolver)
Class.new(base_class) do
define_method :resolve do |**_args|
resolved_value
end
end
end
def find_object_resolver(resolved_value = 'Found object')
Class.new(Resolvers::BaseResolver) do
include ::Gitlab::Graphql::Authorize::AuthorizeResource
def resolve(**args)
authorized_find!(**args)
end
define_method :find_object do |**_args|
resolved_value
end
end
end
end
end