# 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(...) authorized_find!(...) end define_method :find_object do |**_args| resolved_value end end end end end