Skip to content

Commit ea00ca1

Browse files
RachanaRachana
authored andcommitted
BUG#AC-6666:static failures passing
1 parent 593fef1 commit ea00ca1

File tree

1 file changed

+38
-22
lines changed

1 file changed

+38
-22
lines changed

app/code/Magento/CatalogGraphQl/Model/AttributesJoiner.php

Lines changed: 38 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -70,33 +70,16 @@ public function getQueryFields(FieldNode $fieldNode, ResolveInfo $resolveInfo):
7070
$selectedFields = [];
7171
$fragmentFields = [];
7272
/** @var FieldNode $field */
73-
foreach ($query as $field) {
74-
if ($field->kind === NodeKind::INLINE_FRAGMENT) {
75-
$fragmentFields[] = $this->addInlineFragmentFields($resolveInfo, $field);
76-
} elseif ($field->kind === NodeKind::FRAGMENT_SPREAD &&
77-
($spreadFragmentNode = $resolveInfo->fragments[$field->name->value])) {
78-
79-
foreach ($spreadFragmentNode->selectionSet->selections as $spreadNode) {
80-
if (isset($spreadNode->selectionSet->selections)) {
81-
if ($spreadNode->kind === NodeKind::FIELD && isset($spreadNode->name)) {
82-
$selectedFields[] = $spreadNode->name->value;
83-
}
84-
$fragmentFields[] = $this->getQueryFields($spreadNode, $resolveInfo);
85-
} else {
86-
$selectedFields[] = $spreadNode->name->value;
87-
}
88-
}
89-
} else {
90-
$selectedFields[] = $field->name->value;
91-
}
92-
}
73+
$response=$this->test($query, $resolveInfo);
74+
$fragmentFields=$response['fragmentFields'];
75+
$selectedFields=$response['selectedFields'];
9376
if ($fragmentFields) {
9477
$selectedFields = array_merge([], $selectedFields, ...$fragmentFields);
9578
}
96-
$this->setSelectionsForFieldNode($fieldNode, array_unique($selectedFields));
79+
$this->setSelectionsForFieldNode($fieldNode, array_unique($selectedFields));
9780
}
9881

99-
return $this->getFieldNodeSelections($fieldNode);
82+
return $this->getFieldNodeSelections($fieldNode);
10083
}
10184

10285
/**
@@ -181,4 +164,37 @@ private function setSelectionsForFieldNode(FieldNode $fieldNode, array $selected
181164
{
182165
$this->queryFields[$fieldNode->name->value][$fieldNode->name->loc->start] = $selectedFields;
183166
}
167+
168+
/**
169+
* Get array for fragment fields
170+
*
171+
* @param array $query
172+
* @param ResolveInfo $resolveInfo
173+
*/
174+
public function test($query, $resolveInfo)
175+
{
176+
$selectedFields = [];
177+
$fragmentFields = [];
178+
foreach ($query as $field) {
179+
if ($field->kind === NodeKind::INLINE_FRAGMENT) {
180+
$fragmentFields[] = $this->addInlineFragmentFields($resolveInfo, $field);
181+
} elseif ($field->kind === NodeKind::FRAGMENT_SPREAD &&
182+
($spreadFragmentNode = $resolveInfo->fragments[$field->name->value])) {
183+
184+
foreach ($spreadFragmentNode->selectionSet->selections as $spreadNode) {
185+
if (isset($spreadNode->selectionSet->selections)) {
186+
$fragmentFields[] = $this->getQueryFields($spreadNode, $resolveInfo);
187+
} else {
188+
$selectedFields[] = $spreadNode->name->value;
189+
}
190+
}
191+
} else {
192+
$selectedFields[] = $field->name->value;
193+
}
194+
$data=[];
195+
$data['fragmentFields']=$fragmentFields;
196+
$data['selectedFields']=$selectedFields;
197+
return $data;
198+
}
199+
}
184200
}

0 commit comments

Comments
 (0)