From cac011246e9fbc43fd874b8356e9043957f00dfb Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Fri, 17 Nov 2017 16:24:04 -0500 Subject: [PATCH] testDetectsValuesRemovedFromEnum --- src/Utils/FindBreakingChanges.php | 2 +- tests/Utils/FindBreakingChangesTest.php | 47 +++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/Utils/FindBreakingChanges.php b/src/Utils/FindBreakingChanges.php index aeb1f37..452430d 100644 --- a/src/Utils/FindBreakingChanges.php +++ b/src/Utils/FindBreakingChanges.php @@ -479,7 +479,7 @@ class FindBreakingChanges foreach ($oldType->getValues() as $value) { if (!isset($valuesInNewEnum[$value->name])) { $valueName = $value->name; - $valuesRemovedFromEnums[] = ['type' => self::BREAKING_CHANGE_VALUE_REMOVED_FROM_ENUM, 'description' => "${valueName} was removed from enum type ${typeName}"]; + $valuesRemovedFromEnums[] = ['type' => self::BREAKING_CHANGE_VALUE_REMOVED_FROM_ENUM, 'description' => "${valueName} was removed from enum type ${typeName}."]; } } } diff --git a/tests/Utils/FindBreakingChangesTest.php b/tests/Utils/FindBreakingChangesTest.php index 0600999..77ad74c 100644 --- a/tests/Utils/FindBreakingChangesTest.php +++ b/tests/Utils/FindBreakingChangesTest.php @@ -5,6 +5,7 @@ namespace GraphQL\Tests\Utils; +use GraphQL\Type\Definition\EnumType; use GraphQL\Type\Definition\InputObjectType; use GraphQL\Type\Definition\InterfaceType; use GraphQL\Type\Definition\ObjectType; @@ -545,4 +546,50 @@ class FindBreakingChangesTest extends \PHPUnit_Framework_TestCase FindBreakingChanges::findTypesRemovedFromUnions($oldSchema, $newSchema)[0] ); } + + public function testDetectsValuesRemovedFromEnum() + { + $oldEnumType = new EnumType([ + 'name' => 'EnumType1', + 'values' => [ + 'VALUE0' => 0, + 'VALUE1' => 1, + 'VALUE2' => 2 + ] + ]); + $newEnumType = new EnumType([ + 'name' => 'EnumType1', + 'values' => [ + 'VALUE0' => 0, + 'VALUE2' => 1, + 'VALUE3' => 2 + ] + ]); + + $oldSchema = new Schema([ + 'query' => new ObjectType([ + 'name' => 'root', + 'fields' => [ + 'type1' => $oldEnumType + ] + ]) + ]); + + $newSchema = new Schema([ + 'query' => new ObjectType([ + 'name' => 'root', + 'fields' => [ + 'type1' => $newEnumType + ] + ]) + ]); + + $this->assertEquals( + [ + 'type' => FindBreakingChanges::BREAKING_CHANGE_VALUE_REMOVED_FROM_ENUM, + 'description' => 'VALUE1 was removed from enum type EnumType1.' + ], + FindBreakingChanges::findValuesRemovedFromEnums($oldSchema, $newSchema)[0] + ); + } } \ No newline at end of file