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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
# frozen_string_literal: true
require "spec_helper"
describe GraphQL::Tracing::LegacyTrace do
it "calls tracers on a parent schema class" do
custom_tracer = Module.new do
def self.trace(key, data)
if key == "execute_query"
data[:query].context[:tracer_ran] = true
end
yield
end
end
query_type = Class.new(GraphQL::Schema::Object) do
graphql_name("Query")
field :int, Integer
def int
4
end
end
parent_schema = Class.new(GraphQL::Schema) do
query(query_type)
tracer(custom_tracer)
end
child_schema = Class.new(parent_schema)
res1 = parent_schema.execute("{ int }")
assert_equal true, res1.context[:tracer_ran]
res2 = child_schema.execute("{ int }")
assert_equal true, res2.context[:tracer_ran]
end
it "Works with new trace modules in the parent class" do
custom_tracer = Module.new do
def self.trace(key, data)
if key == "execute_query"
data[:query].context[:tracer_ran] = true
end
yield
end
end
custom_trace_module = Module.new do
def execute_query(query:)
query.context[:trace_module_ran] = true
super
end
end
query_type = Class.new(GraphQL::Schema::Object) do
graphql_name("Query")
field :int, Integer
def int
4
end
end
parent_schema = Class.new(GraphQL::Schema) do
query(query_type)
trace_with(custom_trace_module)
end
child_schema = Class.new(parent_schema) do
tracer(custom_tracer)
end
res1 = parent_schema.execute("{ int }")
assert_equal true, res1.context[:trace_module_ran]
assert_nil res1.context[:tracer_ran]
res2 = child_schema.execute("{ int }")
assert_equal true, res2.context[:trace_module_ran], "New Trace Ran"
assert_equal true, res2.context[:tracer_ran], "Legacy Trace Ran"
end
end
|