summaryrefslogtreecommitdiff
path: root/spec/support/helpers/graphql_helpers.rb
blob: 5bb2cf9dd9e53c3ebc1118d76ff3ce14ada6eb67 (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
module GraphqlHelpers
  # Run a loader's named resolver
  def resolve(kls, name, obj: nil, args: {}, ctx: {})
    kls[name].call(obj, args, ctx)
  end

  # Runs a block inside a GraphQL::Batch wrapper
  def batch(max_queries: nil, &blk)
    wrapper = proc do
      GraphQL::Batch.batch do
        result = yield

        if result.is_a?(Array)
          Promise.all(result)
        else
          result
        end
      end
    end

    if max_queries
      result = nil
      expect { result = wrapper.call }.not_to exceed_query_limit(max_queries)
      result
    else
      wrapper.call
    end
  end
end