Skip to content

Commit c4ae034

Browse files
author
Ben Roberts
committed
testFindDangerousArgChanges
1 parent 3c0ed78 commit c4ae034

File tree

2 files changed

+64
-4
lines changed

2 files changed

+64
-4
lines changed

src/Utils/FindBreakingChanges.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,16 +171,19 @@ public static function findArgChanges(
171171
];
172172
} else {
173173
$isSafe = self::isChangeSafeForInputObjectFieldOrFieldArg($oldArgDef->getType(), $newArgDef->getType());
174+
$oldArgType = $oldArgDef->getType();
175+
$oldArgName = $oldArgDef->name;
174176
if (!$isSafe) {
175-
$oldArgType = $oldArgDef->getType();
176177
$newArgType = $newArgDef->getType();
177-
$oldArgName = $oldArgDef->name;
178178
$breakingChanges[] = [
179179
'type' => self::BREAKING_CHANGE_ARG_CHANGED,
180180
'description' => "${oldTypeName}->${fieldName} arg ${oldArgName} has changed type from ${oldArgType} to ${newArgType}."
181181
];
182182
} elseif ($oldArgDef->defaultValueExists() && $oldArgDef->defaultValue !== $newArgDef->defaultValue) {
183-
$dangerousChanges[] = []; // TODO
183+
$dangerousChanges[] = [
184+
'type' => FindBreakingChanges::DANGEROUS_CHANGE_ARG_DEFAULT_VALUE,
185+
'description' => "${oldTypeName}->${fieldName} arg ${oldArgName} has changed defaultValue"
186+
];
184187
}
185188
}
186189
// Check if a non-null arg was added to the field

tests/Utils/FindBreakingChangesTest.php

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class FindBreakingChangesTest extends \PHPUnit_Framework_TestCase
2222
public function setUp()
2323
{
2424
$this->queryType = new ObjectType([
25-
'name' => 'Type1',
25+
'name' => 'Query',
2626
'fields' => [
2727
'field1' => [
2828
'type' => Type::string()
@@ -1228,4 +1228,61 @@ public function testDetectsAllBreakingChanges()
12281228

12291229
$this->assertEquals($expectedBreakingChanges, FindBreakingChanges::findBreakingChanges($oldSchema, $newSchema));
12301230
}
1231+
1232+
// findDangerousChanges tests below here
1233+
1234+
public function testFindDangerousArgChanges()
1235+
{
1236+
$oldType = new ObjectType([
1237+
'name' => 'Type1',
1238+
'fields' => [
1239+
'field1' => [
1240+
'type' => Type::string(),
1241+
'args' => [
1242+
'name' => [
1243+
'type' => Type::string(),
1244+
'defaultValue' => 'test'
1245+
]
1246+
]
1247+
]
1248+
]
1249+
]);
1250+
1251+
$newType = new ObjectType([
1252+
'name' => 'Type1',
1253+
'fields' => [
1254+
'field1' => [
1255+
'type' => Type::string(),
1256+
'args' => [
1257+
'name' => [
1258+
'type' => Type::string(),
1259+
'defaultValue' => 'Testertest'
1260+
]
1261+
]
1262+
]
1263+
]
1264+
]);
1265+
1266+
$oldSchema = new Schema([
1267+
'query' => $this->queryType,
1268+
'types' => [
1269+
$oldType
1270+
]
1271+
]);
1272+
1273+
$newSchema = new Schema([
1274+
'query' => $this->queryType,
1275+
'types' => [
1276+
$newType
1277+
]
1278+
]);
1279+
1280+
$this->assertEquals(
1281+
[
1282+
'type' => FindBreakingChanges::DANGEROUS_CHANGE_ARG_DEFAULT_VALUE,
1283+
'description' => 'Type1->field1 arg name has changed defaultValue'
1284+
],
1285+
FindBreakingChanges::findArgChanges($oldSchema, $newSchema)['dangerousChanges'][0]
1286+
);
1287+
}
12311288
}

0 commit comments

Comments
 (0)