Skip to content

Commit d45d7d8

Browse files
author
Valeriy Naida
authored
ENGCOM-2317: Alphabetize Schema Fields#11 #104
2 parents 94dd6d2 + 5c68913 commit d45d7d8

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

dev/tests/integration/testsuite/Magento/Framework/GraphQl/Config/GraphQlReaderTest.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,16 @@ enumValues(includeDeprecated: true) {
191191
$mergedSchemaResponseFields = array_merge($schemaResponseFieldsFirstHalf, $schemaResponseFieldsSecondHalf);
192192

193193
foreach ($expectedOutput as $searchTerm) {
194+
$sortFields = ['inputFields', 'fields'];
195+
foreach ($sortFields as $sortField) {
196+
isset($searchTerm[$sortField]) && is_array($searchTerm[$sortField])
197+
? usort($searchTerm[$sortField], function ($a, $b) {
198+
$cmpField = 'name';
199+
return isset($a[$cmpField]) && isset($b[$cmpField])
200+
? strcmp($a[$cmpField], $b[$cmpField]) : 0;
201+
}) : null;
202+
}
203+
194204
$this->assertTrue(
195205
(in_array($searchTerm, $mergedSchemaResponseFields)),
196206
'Missing type in the response'

lib/internal/Magento/Framework/GraphQl/Config.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,16 @@ public function getConfigElement(string $configElementName) : ConfigElementInter
6565
}
6666

6767
$fieldsInQuery = $this->queryFields->getFieldsUsedInQuery();
68-
if (isset($data['fields']) && !empty($fieldsInQuery)) {
69-
foreach ($data['fields'] as $fieldName => $fieldConfig) {
70-
if (!isset($fieldsInQuery[$fieldName])) {
71-
unset($data['fields'][$fieldName]);
68+
if (isset($data['fields'])) {
69+
if (!empty($fieldsInQuery)) {
70+
foreach ($data['fields'] as $fieldName => $fieldConfig) {
71+
if (!isset($fieldsInQuery[$fieldName])) {
72+
unset($data['fields'][$fieldName]);
73+
}
7274
}
7375
}
76+
77+
ksort($data['fields']);
7478
}
7579

7680
return $this->configElementFactory->createFromConfigData($data);

0 commit comments

Comments
 (0)