From 382711bb185845a7678a5aa1a03c2e763bf2c548 Mon Sep 17 00:00:00 2001 From: Grigoruta Cristian Date: Mon, 2 Apr 2018 09:29:19 -0500 Subject: [PATCH 1/3] Added the ability to use entity properties in metadata (cherry picked from commit 73c4371) --- .../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 a14d384a8..6d346e75b 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 39f39a220057889162600ffe27fbbc5c5d5d2299 Mon Sep 17 00:00:00 2001 From: Grigoruta Cristian Date: Mon, 2 Apr 2018 10:09:37 -0500 Subject: [PATCH 2/3] Cleaned up some code (cherry picked from commit 231fe18) --- .../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 6d346e75b..afae6e285 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) { From 4079fc986b675729b2675933e0adfc514c989081 Mon Sep 17 00:00:00 2001 From: Ji Lu Date: Fri, 19 Oct 2018 10:07:44 -0500 Subject: [PATCH 3/3] MQE-911: [GitHub PR] Added the ability to use entity properties in metadata - Fixed static test failures --- .../DataGenerator/Persist/OperationDataArrayResolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php index afae6e285..95bcd1bab 100644 --- a/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php +++ b/src/Magento/FunctionalTestingFramework/DataGenerator/Persist/OperationDataArrayResolver.php @@ -66,6 +66,8 @@ public function __construct($dependentEntities = null) * @return array * @throws \Exception * @SuppressWarnings(PHPMD.CyclomaticComplexity) + * @SuppressWarnings(PHPMD.NPathComplexity) + * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function resolveOperationDataArray($entityObject, $operationMetadata, $operation, $fromArray = false) { @@ -134,7 +136,6 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op )); } } else { - $operationElementProperty = null; if (strpos($operationElementType, '.') !== false) { $operationElementComponents = explode('.', $operationElementType); @@ -154,7 +155,6 @@ public function resolveOperationDataArray($entityObject, $operationMetadata, $op )); } foreach ($entityNamesOfType as $entityName) { - if ($operationElementProperty === null) { $operationDataSubArray = $this->resolveNonPrimitiveElement( $entityName,