@@ -266,4 +266,46 @@ def self.object_from_id(id, ctx)
266266 assert_nil res5 [ "data" ] . fetch ( "nullableEnsemble" )
267267 end
268268 end
269+
270+ describe "invalid input types" do
271+ class InvalidArgumentTypeSchema < GraphQL ::Schema
272+ class InvalidArgumentType < GraphQL ::Schema ::Object
273+ end
274+
275+ class InvalidArgumentObject < GraphQL ::Schema ::Object
276+ field :invalid , Boolean , null : false do
277+ argument :object_ref , InvalidArgumentType , required : false
278+ end
279+ end
280+
281+ class InvalidLazyArgumentObject < GraphQL ::Schema ::Object
282+ field :invalid , Boolean , null : false do
283+ argument :lazy_object_ref , "InvalidArgumentTypeSchema::InvalidArgumentType" , required : false
284+ end
285+ end
286+
287+ use GraphQL ::Execution ::Interpreter
288+ use GraphQL ::Analysis ::AST
289+ end
290+
291+ it "rejects them" do
292+ err = assert_raises ArgumentError do
293+ Class . new ( InvalidArgumentTypeSchema ) do
294+ query ( InvalidArgumentTypeSchema ::InvalidArgumentObject )
295+ end
296+ end
297+
298+ expected_message = "Invalid input type for InvalidArgumentObject.invalid.objectRef: InvalidArgument. Must be scalar, enum, or input object, not OBJECT."
299+ assert_equal expected_message , err . message
300+
301+ err = assert_raises ArgumentError do
302+ Class . new ( InvalidArgumentTypeSchema ) do
303+ query ( InvalidArgumentTypeSchema ::InvalidLazyArgumentObject )
304+ end
305+ end
306+
307+ expected_message = "Invalid input type for InvalidLazyArgumentObject.invalid.lazyObjectRef: InvalidArgument. Must be scalar, enum, or input object, not OBJECT."
308+ assert_equal expected_message , err . message
309+ end
310+ end
269311end
0 commit comments