Skip to content

Commit 533b8b8

Browse files
author
Ben Roberts
committed
testDetectsAdditionsToUnionType
1 parent e0a63ec commit 533b8b8

File tree

2 files changed

+63
-3
lines changed

2 files changed

+63
-3
lines changed

src/Utils/FindBreakingChanges.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,12 +433,13 @@ public static function findTypesAddedToUnions(
433433
Schema $oldSchema, Schema $newSchema
434434
)
435435
{
436+
$oldTypeMap = $oldSchema->getTypeMap();
436437
$newTypeMap = $newSchema->getTypeMap();
437438

438439
$typesAddedToUnion = [];
439440

440-
foreach ($newTypeMap as $typeName => $oldType) {
441-
$newType = isset($newTypeMap[$typeName]) ? $newTypeMap[$typeName] : null;
441+
foreach ($newTypeMap as $typeName => $newType) {
442+
$oldType = isset($oldTypeMap[$typeName]) ? $oldTypeMap[$typeName] : null;
442443
if (!($oldType instanceof UnionType) || !($newType instanceof UnionType)) {
443444
continue;
444445
}
@@ -450,7 +451,7 @@ public static function findTypesAddedToUnions(
450451
foreach ($newType->getTypes() as $type) {
451452
if (!isset($typeNamesInOldUnion[$type->name])) {
452453
$addedTypeName = $type->name;
453-
$typesRemovedFromUnion[] = ['type' => self::DANGEROUS_CHANGE_TYPE_ADDED_TO_UNION, 'description' => "${addedTypeName} was removed to union type ${typeName}"];
454+
$typesAddedToUnion[] = ['type' => self::DANGEROUS_CHANGE_TYPE_ADDED_TO_UNION, 'description' => "${addedTypeName} was added to union type ${typeName}"];
454455
}
455456
}
456457
}

tests/Utils/FindBreakingChangesTest.php

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,4 +1326,63 @@ public function testDetectsEnumValueAdditions()
13261326
FindBreakingChanges::findValuesAddedToEnums($oldSchema, $newSchema)[0]
13271327
);
13281328
}
1329+
1330+
public function testDetectsAdditionsToUnionType() {
1331+
$type1 = new ObjectType([
1332+
'name' => 'Type1',
1333+
'fields' => [
1334+
'field1' => Type::string()
1335+
]
1336+
]);
1337+
1338+
$type1a = new ObjectType([
1339+
'name' => 'Type1',
1340+
'fields' => [
1341+
'field1' => Type::string()
1342+
]
1343+
]);
1344+
1345+
$type2 = new ObjectType([
1346+
'name' => 'Type2',
1347+
'fields' => [
1348+
'field1' => Type::string()
1349+
]
1350+
]);
1351+
1352+
$oldUnionType = new UnionType([
1353+
'name' => 'UnionType1',
1354+
'types' => [$type1],
1355+
'resolveType' => function () {
1356+
}
1357+
]);
1358+
1359+
$newUnionType = new UnionType([
1360+
'name' => 'UnionType1',
1361+
'types' => [$type1a, $type2],
1362+
'resolveType' => function () {
1363+
}
1364+
]);
1365+
1366+
$oldSchema = new Schema([
1367+
'query' => $this->queryType,
1368+
'types' => [
1369+
$oldUnionType
1370+
]
1371+
]);
1372+
1373+
$newSchema = new Schema([
1374+
'query' => $this->queryType,
1375+
'types' => [
1376+
$newUnionType
1377+
]
1378+
]);
1379+
1380+
$this->assertEquals(
1381+
[
1382+
'type' => FindBreakingChanges::DANGEROUS_CHANGE_TYPE_ADDED_TO_UNION,
1383+
'description' => 'Type2 was added to union type UnionType1'
1384+
],
1385+
FindBreakingChanges::findTypesAddedToUnions($oldSchema, $newSchema)[0]
1386+
);
1387+
}
13291388
}

0 commit comments

Comments
 (0)