public function testFailsWhenAnIsTypeOfCheckIsNotMet()
{
$SpecialType = new ObjectType(['name' => 'SpecialType', 'isTypeOf' => function ($obj) {
return $obj instanceof Special;
}, 'fields' => ['value' => ['type' => Type::string()]]]);
$schema = new Schema(['query' => new ObjectType(['name' => 'Query', 'fields' => ['specials' => ['type' => Type::listOf($SpecialType), 'resolve' => function ($rootValue) {
return $rootValue['specials'];
}]]])]);
$query = Parser::parse('{ specials { value } }');
$value = ['specials' => [new Special('foo'), new NotSpecial('bar')]];
$result = Executor::execute($schema, $query, $value);
$this->assertEquals(['specials' => [['value' => 'foo'], null]], $result->data);
$this->assertEquals(1, count($result->errors));
$this->assertArraySubset(['message' => 'Expected value of type SpecialType but got: GraphQL\\Tests\\Executor\\NotSpecial', 'locations' => [['line' => 1, 'column' => 3]]], $result->errors[0]->toSerializableArray());
}