mirror of
https://github.com/retailcrm/graphql-php.git
synced 2024-11-25 06:16:05 +03:00
Additional tests for variable coercion + use printSafeJson vs printSafe for input variables
This commit is contained in:
parent
a1e06b2e61
commit
1e34982bda
@ -280,7 +280,7 @@ class Values
|
|||||||
// a non-null value.
|
// a non-null value.
|
||||||
$parseResult = $type->parseValue($value);
|
$parseResult = $type->parseValue($value);
|
||||||
if (null === $parseResult && !$type->isValidValue($value)) {
|
if (null === $parseResult && !$type->isValidValue($value)) {
|
||||||
$v = Utils::printSafe($value);
|
$v = Utils::printSafeJson($value);
|
||||||
return [
|
return [
|
||||||
"Expected type \"{$type->name}\", found $v."
|
"Expected type \"{$type->name}\", found $v."
|
||||||
];
|
];
|
||||||
@ -288,12 +288,12 @@ class Values
|
|||||||
return [];
|
return [];
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return [
|
return [
|
||||||
"Expected type \"{$type->name}\", found " . Utils::printSafe($value) . ': ' .
|
"Expected type \"{$type->name}\", found " . Utils::printSafeJson($value) . ': ' .
|
||||||
$e->getMessage()
|
$e->getMessage()
|
||||||
];
|
];
|
||||||
} catch (\Throwable $e) {
|
} catch (\Throwable $e) {
|
||||||
return [
|
return [
|
||||||
"Expected type \"{$type->name}\", found " . Utils::printSafe($value) . ': ' .
|
"Expected type \"{$type->name}\", found " . Utils::printSafeJson($value) . ': ' .
|
||||||
$e->getMessage()
|
$e->getMessage()
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -3,12 +3,10 @@ namespace GraphQL\Tests\Executor;
|
|||||||
|
|
||||||
require_once __DIR__ . '/TestClasses.php';
|
require_once __DIR__ . '/TestClasses.php';
|
||||||
|
|
||||||
use GraphQL\Error\Error;
|
use GraphQL\Error\InvariantViolation;
|
||||||
use GraphQL\Executor\Executor;
|
use GraphQL\Executor\Executor;
|
||||||
use GraphQL\Error\FormattedError;
|
|
||||||
use GraphQL\Language\Parser;
|
use GraphQL\Language\Parser;
|
||||||
use GraphQL\Language\SourceLocation;
|
use GraphQL\Type\Schema;
|
||||||
use GraphQL\Schema;
|
|
||||||
use GraphQL\Type\Definition\InputObjectType;
|
use GraphQL\Type\Definition\InputObjectType;
|
||||||
use GraphQL\Type\Definition\ObjectType;
|
use GraphQL\Type\Definition\ObjectType;
|
||||||
use GraphQL\Type\Definition\Type;
|
use GraphQL\Type\Definition\Type;
|
||||||
@ -467,6 +465,47 @@ class VariablesTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($expected, Executor::execute($this->schema(), $ast)->toArray());
|
$this->assertEquals($expected, Executor::execute($this->schema(), $ast)->toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @it reports error for array passed into string input
|
||||||
|
*/
|
||||||
|
public function testReportsErrorForArrayPassedIntoStringInput()
|
||||||
|
{
|
||||||
|
|
||||||
|
$doc = '
|
||||||
|
query SetsNonNullable($value: String!) {
|
||||||
|
fieldWithNonNullableStringInput(input: $value)
|
||||||
|
}
|
||||||
|
';
|
||||||
|
$ast = Parser::parse($doc);
|
||||||
|
$variables = ['value' => [1, 2, 3]];
|
||||||
|
|
||||||
|
$expected = [
|
||||||
|
'errors' => [[
|
||||||
|
'message' =>
|
||||||
|
'Variable "$value" got invalid value [1,2,3].' . "\n" .
|
||||||
|
'Expected type "String", found array(3).',
|
||||||
|
'category' => 'graphql',
|
||||||
|
'locations' => [
|
||||||
|
['line' => 2, 'column' => 31]
|
||||||
|
]
|
||||||
|
]]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertEquals($expected, Executor::execute($this->schema(), $ast, null, null, $variables)->toArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @it serializing an array via GraphQLString throws TypeError
|
||||||
|
*/
|
||||||
|
public function testSerializingAnArrayViaGraphQLStringThrowsTypeError()
|
||||||
|
{
|
||||||
|
$this->setExpectedException(
|
||||||
|
InvariantViolation::class,
|
||||||
|
'String cannot represent non scalar value: array(3)'
|
||||||
|
);
|
||||||
|
Type::string()->serialize([1, 2, 3]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @it reports error for non-provided variables for non-nullable inputs
|
* @it reports error for non-provided variables for non-nullable inputs
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user