mirror of
https://github.com/retailcrm/graphql-php.git
synced 2025-02-06 07:49:24 +03:00
testShouldDetectInputFieldChanges
This commit is contained in:
parent
68dbcc9ca3
commit
cf4cccf4d6
@ -317,7 +317,7 @@ class FindBreakingChanges
|
||||
if (!$isSafe) {
|
||||
$oldFieldTypeString = self::isNamedType($oldFieldType) ? $oldFieldType->name : $oldFieldType;
|
||||
$newFieldTypeString = self::isNamedType($newfieldType) ? $newfieldType->name : $newfieldType;
|
||||
$breakingFieldChanges[] = ['type' => self::BREAKING_CHANGE_FIELD_CHANGED, 'description' => "${typeName}->${fieldName} changed type from ${oldFieldTypeString} to ${newFieldTypeString}"];
|
||||
$breakingFieldChanges[] = ['type' => self::BREAKING_CHANGE_FIELD_CHANGED, 'description' => "${typeName}->${fieldName} changed type from ${oldFieldTypeString} to ${newFieldTypeString}."];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
|
||||
namespace GraphQL\Tests\Utils;
|
||||
|
||||
use GraphQL\Type\Definition\InputObjectType;
|
||||
use GraphQL\Type\Definition\InterfaceType;
|
||||
use GraphQL\Type\Definition\ObjectType;
|
||||
use GraphQL\Type\Definition\Type;
|
||||
@ -258,4 +259,173 @@ class FindBreakingChangesTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals($expectedFieldChanges, FindBreakingChanges::findFieldsThatChangedType($oldSchema, $newSchema));
|
||||
}
|
||||
|
||||
|
||||
public function testShouldDetectInputFieldChanges()
|
||||
{
|
||||
$oldInputType = new InputObjectType([
|
||||
'name' => 'InputType1',
|
||||
'fields' => [
|
||||
'field1' => [
|
||||
'type' => Type::string(),
|
||||
],
|
||||
'field2' => [
|
||||
'type' => Type::boolean(),
|
||||
],
|
||||
'field3' => [
|
||||
'type' => Type::listOf(Type::string())
|
||||
],
|
||||
'field4' => [
|
||||
'type' => Type::nonNull(Type::string()),
|
||||
],
|
||||
'field5' => [
|
||||
'type' => Type::string(),
|
||||
],
|
||||
'field6' => [
|
||||
'type' => Type::listOf(Type::int())
|
||||
],
|
||||
'field7' => [
|
||||
'type' => Type::nonNull(Type::listOf(Type::int()))
|
||||
],
|
||||
'field8' => [
|
||||
'type' => Type::int(),
|
||||
],
|
||||
'field9' => [
|
||||
'type' => Type::listOf(Type::int())
|
||||
],
|
||||
'field10' => [
|
||||
'type' => Type::listOf(Type::nonNull(Type::int()))
|
||||
],
|
||||
'field11' => [
|
||||
'type' => Type::listOf(Type::int())
|
||||
],
|
||||
'field12' => [
|
||||
'type' => Type::listOf(Type::listOf(Type::int()))
|
||||
],
|
||||
'field13' => [
|
||||
'type' => Type::nonNull(Type::int())
|
||||
],
|
||||
'field14' => [
|
||||
'type' => Type::listOf(Type::nonNull(Type::listOf(Type::int())))
|
||||
],
|
||||
'field15' => [
|
||||
'type' => Type::listOf(Type::nonNull(Type::listOf(Type::int())))
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
$newInputType = new InputObjectType([
|
||||
'name' => 'InputType1',
|
||||
'fields' => [
|
||||
'field1' => [
|
||||
'type' => Type::int(),
|
||||
],
|
||||
'field3' => [
|
||||
'type' => Type::string()
|
||||
],
|
||||
'field4' => [
|
||||
'type' => Type::string()
|
||||
],
|
||||
'field5' => [
|
||||
'type' => Type::nonNull(Type::string())
|
||||
],
|
||||
'field6' => [
|
||||
'type' => Type::nonNull(Type::listOf(Type::int()))
|
||||
],
|
||||
'field7' => [
|
||||
'type' => Type::listOf(Type::int())
|
||||
],
|
||||
'field8' => [
|
||||
'type' => Type::nonNull(Type::listOf(Type::int()))
|
||||
],
|
||||
'field9' => [
|
||||
'type' => Type::listOf(Type::nonNull(Type::int()))
|
||||
],
|
||||
'field10' => [
|
||||
'type' => Type::listOf(Type::int())
|
||||
],
|
||||
'field11' => [
|
||||
'type' => Type::listOf(Type::listOf(Type::int()))
|
||||
],
|
||||
'field12' => [
|
||||
'type' => Type::listOf(Type::int())
|
||||
],
|
||||
'field13' => [
|
||||
'type' => Type::nonNull(Type::listOf(Type::int()))
|
||||
],
|
||||
'field14' => [
|
||||
'type' => Type::listOf(Type::listOf(Type::int()))
|
||||
],
|
||||
'field15' => [
|
||||
'type' => Type::listOf(Type::nonNull(Type::listOf(Type::nonNull(Type::int()))))
|
||||
]
|
||||
]
|
||||
]);
|
||||
|
||||
$oldSchema = new Schema([
|
||||
'query' => new ObjectType([
|
||||
'name' => 'root',
|
||||
'fields' => [
|
||||
'type1' => $oldInputType
|
||||
]
|
||||
])
|
||||
]);
|
||||
|
||||
$newSchema = new Schema([
|
||||
'query' => new ObjectType([
|
||||
'name' => 'root',
|
||||
'fields' => [
|
||||
'type1' => $newInputType
|
||||
]
|
||||
])
|
||||
]);
|
||||
|
||||
$expectedFieldChanges = [
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field1 changed type from String to Int.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_REMOVED,
|
||||
'description' => 'InputType1->field2 was removed.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field3 changed type from [String] to String.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field5 changed type from String to String!.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field6 changed type from [Int] to [Int]!.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field8 changed type from Int to [Int]!.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field9 changed type from [Int] to [Int!].',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field11 changed type from [Int] to [[Int]].',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field12 changed type from [[Int]] to [Int].',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field13 changed type from Int! to [Int]!.',
|
||||
],
|
||||
[
|
||||
'type' => FindBreakingChanges::BREAKING_CHANGE_FIELD_CHANGED,
|
||||
'description' => 'InputType1->field15 changed type from [[Int]!] to [[Int!]!].',
|
||||
],
|
||||
];
|
||||
|
||||
$this->assertEquals($expectedFieldChanges, FindBreakingChanges::findFieldsThatChangedType($oldSchema, $newSchema));
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user