summaryrefslogtreecommitdiff
path: root/spec/support/helpers/graphql_helpers.rb
blob: 1eaa7603af0d8411495ef7a0655ee5315944d5d3 (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
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 BatchLoader::Executor wrapper
  def batch(max_queries: nil, &blk)
    wrapper = proc do
      begin
        BatchLoader::Executor.ensure_current
        blk.call
      ensure
        BatchLoader::Executor.clear_current
      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