Skip to content

Commit 422271e

Browse files
committed
Merge branch 'MQE-465' into sprint-develop
2 parents 2f532fa + 9ca4270 commit 422271e

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

src/Magento/FunctionalTestingFramework/DataGenerator/Persist/DataPersistenceHandler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ private function setCreatedObject($response, $index, $requestDataArray, $isJson)
174174
$responseData = $responseData[$index];
175175
}
176176
if (is_array($responseData)) {
177-
$persistedData = array_merge($requestDataArray, $responseData);
177+
$persistedData = $this->convertToFlatArray(array_merge($requestDataArray, $responseData));
178178
} else {
179179
$persistedData = $requestDataArray;
180180
}

src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,39 @@ public function __construct($dependentEntities = null)
6161
* @param EntityDataObject $entityObject
6262
* @param array $operationMetadata
6363
* @param string $operation
64+
* @param integer $depth
6465
* @return array
6566
* @throws \Exception
6667
*/
67-
public function resolveOperationDataArray($entityObject, $operationMetadata, $operation)
68+
public function resolveOperationDataArray($entityObject, $operationMetadata, $operation, $depth = 0)
6869
{
6970
$operationDataArray = [];
7071
self::incrementSequence($entityObject->getName());
7172

7273
foreach ($operationMetadata as $operationElement) {
7374
if ($operationElement->getType() == OperationElementExtractor::OPERATION_OBJECT_OBJ_NAME) {
7475
$entityObj = $this->resolveOperationObjectAndEntityData($entityObject, $operationElement->getValue());
75-
$operationDataArray[$operationElement->getKey()] =
76-
$this->resolveOperationDataArray($entityObj, $operationElement->getNestedMetadata(), $operation);
76+
if (null === $entityObj && $operationElement->getRequired()) {
77+
throw new \Exception(sprintf(
78+
self::EXCEPTION_REQUIRED_DATA,
79+
$operationElement->getType(),
80+
$operationElement->getKey(),
81+
$entityObject->getName()
82+
));
83+
} elseif (null === $entityObj) {
84+
continue;
85+
}
86+
$operationData = $this->resolveOperationDataArray(
87+
$entityObj,
88+
$operationElement->getNestedMetadata(),
89+
$operation,
90+
$depth+1
91+
);
92+
if ($depth == 0) {
93+
$operationDataArray[$operationElement->getKey()] = $operationData;
94+
} else {
95+
$operationDataArray = $operationData;
96+
}
7797
continue;
7898
}
7999

@@ -127,7 +147,8 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op
127147
$operationDataSubArray = $this->resolveNonPrimitiveElement(
128148
$entityName,
129149
$operationElement,
130-
$operation
150+
$operation,
151+
$depth
131152
);
132153

133154
if ($operationElement->getType() == OperationDefinitionObjectHandler::ENTITY_OPERATION_ARRAY) {
@@ -216,8 +237,12 @@ private function resolveOperationObjectAndEntityData($entityObject, $operationEl
216237
{
217238
if ($operationElementValue != $entityObject->getType()) {
218239
// if we have a mismatch attempt to retrieve linked data and return just the first linkage
219-
$linkName = $entityObject->getLinkedEntitiesOfType($operationElementValue)[0];
220-
return DataObjectHandler::getInstance()->getObject($linkName);
240+
$linkName = $entityObject->getLinkedEntitiesOfType($operationElementValue);
241+
if (!empty($linkName)) {
242+
$linkName = $linkName[0];
243+
return DataObjectHandler::getInstance()->getObject($linkName);
244+
}
245+
return null;
221246
}
222247

223248
return $entityObject;
@@ -229,9 +254,10 @@ private function resolveOperationObjectAndEntityData($entityObject, $operationEl
229254
* @param string $entityName
230255
* @param OperationElement $operationElement
231256
* @param string $operation
257+
* @param integer $depth
232258
* @return array
233259
*/
234-
private function resolveNonPrimitiveElement($entityName, $operationElement, $operation)
260+
private function resolveNonPrimitiveElement($entityName, $operationElement, $operation, $depth)
235261
{
236262
$linkedEntityObj = $this->resolveLinkedEntityObject($entityName);
237263

@@ -242,10 +268,11 @@ private function resolveNonPrimitiveElement($entityName, $operationElement, $ope
242268
$operationSubArray = $this->resolveOperationDataArray(
243269
$linkedEntityObj,
244270
[$operationElement->getNestedOperationElement($operationElement->getValue())],
245-
$operation
271+
$operation,
272+
$depth+1
246273
);
247274

248-
return $operationSubArray[$operationElement->getValue()];
275+
return $operationSubArray;
249276
}
250277

251278
$operationMetadata = OperationDefinitionObjectHandler::getInstance()->getOperationDefinition(

0 commit comments

Comments
 (0)