Welcome to mirror list, hosted at ThFree Co, Russian Federation.

resolver_factories.rb « graphql « support « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 8188f17cc43c52e388e956208f8af3474bfbbf77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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')
      Class.new(Resolvers::BaseResolver) 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