From 73c437125effd276c00e0f0d629c31be52073f62 Mon Sep 17 00:00:00 2001 From: Grigoruta Cristian Date: Mon, 2 Apr 2018 17:29:19 +0300 Subject: [PATCH 1/2] Added the ability to use entity properties in metadata --- .../Persist/OperationDataArrayResolver.php | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php index 6097f64da..ac9a091e4 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php @@ -134,6 +134,14 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op )); } } else { + + $operationElementProperty = null; + if(strpos($operationElementType, '.') !== false){ + $operationElementComponents = explode('.',$operationElementType); + $operationElementType = $operationElementComponents[0]; + $operationElementProperty = $operationElementComponents[1]; + } + $entityNamesOfType = $entityObject->getLinkedEntitiesOfType($operationElementType); // If an element is required by metadata, but was not provided in the entity, throw an exception @@ -146,12 +154,23 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op )); } foreach ($entityNamesOfType as $entityName) { - $operationDataSubArray = $this->resolveNonPrimitiveElement( - $entityName, - $operationElement, - $operation, - $fromArray - ); + + if($operationElementProperty === null) { + $operationDataSubArray = $this->resolveNonPrimitiveElement( + $entityName, + $operationElement, + $operation, + $fromArray + ); + }else { + $linkedEntityObj = $this->resolveLinkedEntityObject($entityName); + $operationDataSubArray = $linkedEntityObj->getDataByName($operationElementProperty,0); + + if($operationDataSubArray === null) + throw new \Exception( + sprintf('Property %s not found in entity %s \n', $operationElementProperty, $entityName) + ); + } if ($operationElement->getType() == OperationDefinitionObjectHandler::ENTITY_OPERATION_ARRAY) { $operationDataArray[$operationElement->getKey()][] = $operationDataSubArray; From 231fe18175e6603373225b94db3d90d0ced7f6a8 Mon Sep 17 00:00:00 2001 From: Grigoruta Cristian Date: Mon, 2 Apr 2018 18:09:37 +0300 Subject: [PATCH 2/2] Cleaned up some code --- .../Persist/OperationDataArrayResolver.php | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php index ac9a091e4..f1f11935f 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php @@ -136,8 +136,8 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op } else { $operationElementProperty = null; - if(strpos($operationElementType, '.') !== false){ - $operationElementComponents = explode('.',$operationElementType); + if (strpos($operationElementType, '.') !== false) { + $operationElementComponents = explode('.', $operationElementType); $operationElementType = $operationElementComponents[0]; $operationElementProperty = $operationElementComponents[1]; } @@ -155,21 +155,22 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op } foreach ($entityNamesOfType as $entityName) { - if($operationElementProperty === null) { + if ($operationElementProperty === null) { $operationDataSubArray = $this->resolveNonPrimitiveElement( $entityName, $operationElement, $operation, $fromArray ); - }else { + } else { $linkedEntityObj = $this->resolveLinkedEntityObject($entityName); - $operationDataSubArray = $linkedEntityObj->getDataByName($operationElementProperty,0); + $operationDataSubArray = $linkedEntityObj->getDataByName($operationElementProperty, 0); - if($operationDataSubArray === null) + if ($operationDataSubArray === null) { throw new \Exception( sprintf('Property %s not found in entity %s \n', $operationElementProperty, $entityName) ); + } } if ($operationElement->getType() == OperationDefinitionObjectHandler::ENTITY_OPERATION_ARRAY) {