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) {
|
if (!$isSafe) {
|
||||||
$oldFieldTypeString = self::isNamedType($oldFieldType) ? $oldFieldType->name : $oldFieldType;
|
$oldFieldTypeString = self::isNamedType($oldFieldType) ? $oldFieldType->name : $oldFieldType;
|
||||||
$newFieldTypeString = self::isNamedType($newfieldType) ? $newfieldType->name : $newfieldType;
|
$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;
|
namespace GraphQL\Tests\Utils;
|
||||||
|
|
||||||
|
use GraphQL\Type\Definition\InputObjectType;
|
||||||
use GraphQL\Type\Definition\InterfaceType;
|
use GraphQL\Type\Definition\InterfaceType;
|
||||||
use GraphQL\Type\Definition\ObjectType;
|
use GraphQL\Type\Definition\ObjectType;
|
||||||
use GraphQL\Type\Definition\Type;
|
use GraphQL\Type\Definition\Type;
|
||||||
@ -258,4 +259,173 @@ class FindBreakingChangesTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertEquals($expectedFieldChanges, FindBreakingChanges::findFieldsThatChangedType($oldSchema, $newSchema));
|
$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