From c4ae03454a53f76a117d1da0f620661fe710179e Mon Sep 17 00:00:00 2001 From: Ben Roberts Date: Tue, 21 Nov 2017 11:50:11 -0500 Subject: [PATCH] testFindDangerousArgChanges --- src/Utils/FindBreakingChanges.php | 9 ++-- tests/Utils/FindBreakingChangesTest.php | 59 ++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 4 deletions(-) diff --git a/src/Utils/FindBreakingChanges.php b/src/Utils/FindBreakingChanges.php index 0a8325c..3880dcb 100644 --- a/src/Utils/FindBreakingChanges.php +++ b/src/Utils/FindBreakingChanges.php @@ -171,16 +171,19 @@ class FindBreakingChanges ]; } else { $isSafe = self::isChangeSafeForInputObjectFieldOrFieldArg($oldArgDef->getType(), $newArgDef->getType()); + $oldArgType = $oldArgDef->getType(); + $oldArgName = $oldArgDef->name; if (!$isSafe) { - $oldArgType = $oldArgDef->getType(); $newArgType = $newArgDef->getType(); - $oldArgName = $oldArgDef->name; $breakingChanges[] = [ 'type' => self::BREAKING_CHANGE_ARG_CHANGED, 'description' => "${oldTypeName}->${fieldName} arg ${oldArgName} has changed type from ${oldArgType} to ${newArgType}." ]; } elseif ($oldArgDef->defaultValueExists() && $oldArgDef->defaultValue !== $newArgDef->defaultValue) { - $dangerousChanges[] = []; // TODO + $dangerousChanges[] = [ + 'type' => FindBreakingChanges::DANGEROUS_CHANGE_ARG_DEFAULT_VALUE, + 'description' => "${oldTypeName}->${fieldName} arg ${oldArgName} has changed defaultValue" + ]; } } // Check if a non-null arg was added to the field diff --git a/tests/Utils/FindBreakingChangesTest.php b/tests/Utils/FindBreakingChangesTest.php index 4345ea1..1153e53 100644 --- a/tests/Utils/FindBreakingChangesTest.php +++ b/tests/Utils/FindBreakingChangesTest.php @@ -22,7 +22,7 @@ class FindBreakingChangesTest extends \PHPUnit_Framework_TestCase public function setUp() { $this->queryType = new ObjectType([ - 'name' => 'Type1', + 'name' => 'Query', 'fields' => [ 'field1' => [ 'type' => Type::string() @@ -1228,4 +1228,61 @@ class FindBreakingChangesTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expectedBreakingChanges, FindBreakingChanges::findBreakingChanges($oldSchema, $newSchema)); } + + // findDangerousChanges tests below here + + public function testFindDangerousArgChanges() + { + $oldType = new ObjectType([ + 'name' => 'Type1', + 'fields' => [ + 'field1' => [ + 'type' => Type::string(), + 'args' => [ + 'name' => [ + 'type' => Type::string(), + 'defaultValue' => 'test' + ] + ] + ] + ] + ]); + + $newType = new ObjectType([ + 'name' => 'Type1', + 'fields' => [ + 'field1' => [ + 'type' => Type::string(), + 'args' => [ + 'name' => [ + 'type' => Type::string(), + 'defaultValue' => 'Testertest' + ] + ] + ] + ] + ]); + + $oldSchema = new Schema([ + 'query' => $this->queryType, + 'types' => [ + $oldType + ] + ]); + + $newSchema = new Schema([ + 'query' => $this->queryType, + 'types' => [ + $newType + ] + ]); + + $this->assertEquals( + [ + 'type' => FindBreakingChanges::DANGEROUS_CHANGE_ARG_DEFAULT_VALUE, + 'description' => 'Type1->field1 arg name has changed defaultValue' + ], + FindBreakingChanges::findArgChanges($oldSchema, $newSchema)['dangerousChanges'][0] + ); + } } \ No newline at end of file