Repository URL to install this package:
|
Version:
1.8.2 ▾
|
# frozen_string_literal: true
require "spec_helper"
describe GraphQL::Schema::Finder do
let(:finder) { GraphQL::Schema::Finder.new(Jazz::Schema) }
describe "#find" do
it "finds a valid object type" do
type = finder.find("Ensemble")
assert_equal "Ensemble", type.name
end
it "raises when finding an invalid object type" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("DoesNotExist")
end
assert_match /Could not find type `DoesNotExist` in schema./, exception.message
end
it "finds a valid directive" do
directive = finder.find("@include")
assert_equal "include", directive.name
end
it "raises when finding an invalid directive" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("@yolo")
end
assert_match /Could not find directive `@yolo` in schema./, exception.message
end
it "finds a valid field" do
field = finder.find("Ensemble.musicians")
assert_equal "musicians", field.name
end
it "finds a meta field" do
field = finder.find("Ensemble.__typename")
assert_equal "__typename", field.name
end
it "raises when finding an in valid field" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("Ensemble.nope")
end
assert_match /Could not find field `nope` on object type `Ensemble`./, exception.message
end
it "finds a valid argument" do
arg = finder.find("Query.find.id")
assert_equal "id", arg.name
end
it "raises when finding an invalid argument" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("Query.find.thisArgumentIsInvalid")
end
assert_match /Could not find argument `thisArgumentIsInvalid` on field `find`./, exception.message
end
it "raises when selecting on an argument" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("Query.find.id.whyYouDoThis")
end
assert_match /Cannot select member `whyYouDoThis` on a field./, exception.message
end
it "finds a valid interface" do
type = finder.find("NamedEntity")
assert_equal "NamedEntity", type.name
end
it "finds a valid input type" do
type = finder.find("LegacyInput")
assert_equal "LegacyInput", type.name
end
it "finds a valid input field" do
input_field = finder.find("LegacyInput.intValue")
assert_equal "intValue", input_field.name
end
it "raises when finding an invalid input field" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("LegacyInput.wat")
end
assert_match /Could not find input field `wat` on input object type `LegacyInput`./, exception.message
end
it "finds a valid union type" do
type = finder.find("PerformingAct")
assert_equal "PerformingAct", type.name
end
it "raises when selecting a possible type" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("PerformingAct.Musician")
end
assert_match /Cannot select union possible type `Musician`. Select the type directly instead./, exception.message
end
it "finds a valid enum type" do
type = finder.find("Family")
assert_equal "Family", type.name
end
it "finds a valid enum value" do
value = finder.find("Family.BRASS")
assert_equal "BRASS", value.name
end
it "raises when finding an invalid enum value" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("Family.THISISNOTASTATUS")
end
assert_match /Could not find enum value `THISISNOTASTATUS` on enum type `Family`./, exception.message
end
it "raises when selecting on an enum value" do
exception = assert_raises GraphQL::Schema::Finder::MemberNotFoundError do
finder.find("Family.BRASS.wat")
end
assert_match /Cannot select member `wat` on an enum value./, exception.message
end
end
end