Skip to content

Commit 886ddf9

Browse files
committed
Merge branch 'MQE-639' into sprint-develop
2 parents 9e6df12 + 9aeb6ca commit 886ddf9

File tree

2 files changed

+40
-38
lines changed

2 files changed

+40
-38
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/DataGenerator/Handlers/OperationDefinitionObjectHandlerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ private function setMockParserOutput($data)
368368
// clear Operation object handler value to inject parsed content
369369
$property = new \ReflectionProperty(
370370
OperationDefinitionObjectHandler::class,
371-
'DATA_DEFINITION_OBJECT_HANDLER'
371+
'INSTANCE'
372372
);
373373
$property->setAccessible(true);
374374
$property->setValue(null);

src/Magento/FunctionalTestingFramework/DataGenerator/Handlers/OperationDefinitionObjectHandler.php

Lines changed: 39 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
67
namespace Magento\FunctionalTestingFramework\DataGenerator\Handlers;
78

89
use Magento\FunctionalTestingFramework\DataGenerator\Objects\OperationDefinitionObject;
@@ -42,73 +43,72 @@ class OperationDefinitionObjectHandler implements ObjectHandlerInterface
4243
const ENTITY_OPERATION_REQUIRED = 'required';
4344

4445
/**
45-
* Singleton Instance of class
46+
* The singleton instance of this class
4647
*
4748
* @var OperationDefinitionObjectHandler
4849
*/
49-
private static $DATA_DEFINITION_OBJECT_HANDLER;
50+
private static $INSTANCE;
5051

5152
/**
52-
* Array containing all Data Definition Objects
53+
* An array containing all <operation>
5354
*
54-
* @var array
55+
* @var OperationDefinitionObject[]
5556
*/
56-
private $operationDefinitions = [];
57+
private $operationDefinitionObjects = [];
5758

5859
/**
59-
* Object used to extract dataObjects from array into DataElements
60+
* A helper used to convert the primitive array parser output into objects.
6061
*
6162
* @var OperationElementExtractor
6263
*/
63-
private $dataDefExtractor;
64+
private $operationElementExtractor;
65+
66+
/**
67+
* The constructor
68+
*/
69+
private function __construct()
70+
{
71+
$this->operationElementExtractor = new OperationElementExtractor();
72+
}
6473

6574
/**
66-
* Singleton method to return DataDefinitionProcessor.
75+
* Return the singleton instance of this class
6776
*
6877
* @return OperationDefinitionObjectHandler
6978
*/
7079
public static function getInstance()
7180
{
72-
if (!self::$DATA_DEFINITION_OBJECT_HANDLER) {
73-
self::$DATA_DEFINITION_OBJECT_HANDLER = new OperationDefinitionObjectHandler();
74-
self::$DATA_DEFINITION_OBJECT_HANDLER->initDataDefinitions();
81+
if (!self::$INSTANCE) {
82+
self::$INSTANCE = new OperationDefinitionObjectHandler();
83+
self::$INSTANCE->initialize();
7584
}
7685

77-
return self::$DATA_DEFINITION_OBJECT_HANDLER;
86+
return self::$INSTANCE;
7887
}
7988

8089
/**
81-
* Returns a OperationDefinitionObject object based on name
90+
* Return an <operation> by the "name" attribute
8291
*
83-
* @param string $operationDefinitionName
92+
* @param string $name
8493
* @return OperationDefinitionObject
8594
*/
86-
public function getObject($operationDefinitionName)
95+
public function getObject($name)
8796
{
88-
return $this->operationDefinitions[$operationDefinitionName];
97+
return $this->getAllObjects()[$name];
8998
}
9099

91100
/**
92-
* Returns all data Definition objects
101+
* Return all <operation>
93102
*
94-
* @return array
103+
* @return OperationDefinitionObject[]
95104
*/
96105
public function getAllObjects()
97106
{
98-
return $this->operationDefinitions;
107+
return $this->operationDefinitionObjects;
99108
}
100109

101110
/**
102-
* DataDefintionArrayProcessor constructor.
103-
*/
104-
private function __construct()
105-
{
106-
$this->dataDefExtractor = new OperationElementExtractor();
107-
}
108-
109-
/**
110-
* This method takes an operation such as create and a data type such as 'customer' and returns the corresponding
111-
* data definition defined in metadata.xml
111+
* Return an <operation> by operation and type. Eg. "create" and "address"
112112
*
113113
* @param string $operation
114114
* @param string $dataType
@@ -120,20 +120,22 @@ public function getOperationDefinition($operation, $dataType)
120120
}
121121

122122
/**
123-
* This method reads all dataDefinitions from metadata xml into memory.
123+
* Read metadata xml via the Magento parser and then convert the primitive array output
124+
* into an array of objects.
125+
*
124126
* @return void
125127
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
126128
* @SuppressWarnings(PHPMD.NPathComplexity)
127129
* @SuppressWarnings(PHPMD.UnusedPrivateMethod)
128130
* @SuppressWarnings(PHPMD.ExcessiveMethodLength)
129131
*/
130-
private function initDataDefinitions()
132+
private function initialize()
131133
{
132134
//TODO: Reduce CyclomaticComplexity/NPathComplexity/Length of method, remove warning suppression.
133135
$objectManager = ObjectManagerFactory::getObjectManager();
134-
$metadataParser = $objectManager->create(OperationDefinitionParser::class);
135-
foreach ($metadataParser->readOperationMetadata()
136-
[OperationDefinitionObjectHandler::ENTITY_OPERATION_ROOT_TAG] as $dataDefName => $opDefArray) {
136+
$parser = $objectManager->create(OperationDefinitionParser::class);
137+
$parserOutput = $parser->readOperationMetadata()[OperationDefinitionObjectHandler::ENTITY_OPERATION_ROOT_TAG];
138+
foreach ($parserOutput as $dataDefName => $opDefArray) {
137139
$operation = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_TYPE];
138140
$dataType = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_DATA_TYPE];
139141
$url = $opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_URL] ?? null;
@@ -168,7 +170,7 @@ private function initDataDefinitions()
168170
// extract relevant OperationObjects as OperationElements
169171
if (array_key_exists(OperationDefinitionObjectHandler::ENTITY_OPERATION_OBJECT, $opDefArray)) {
170172
foreach ($opDefArray[OperationDefinitionObjectHandler::ENTITY_OPERATION_OBJECT] as $opElementArray) {
171-
$operationElements[] = $this->dataDefExtractor->extractOperationElement($opElementArray);
173+
$operationElements[] = $this->operationElementExtractor->extractOperationElement($opElementArray);
172174
}
173175
}
174176

@@ -195,7 +197,7 @@ private function initDataDefinitions()
195197
OperationDefinitionObjectHandler::ENTITY_OPERATION_OBJECT,
196198
$operationField
197199
)) {
198-
$nestedDataElement = $this->dataDefExtractor->extractOperationElement(
200+
$nestedDataElement = $this->operationElementExtractor->extractOperationElement(
199201
$operationField[OperationDefinitionObjectHandler::ENTITY_OPERATION_OBJECT][0]
200202
);
201203
$subOperationElements[$nestedDataElement->getKey()] = $nestedDataElement;
@@ -217,7 +219,7 @@ private function initDataDefinitions()
217219
}
218220
}
219221

220-
$this->operationDefinitions[$operation . $dataType] = new OperationDefinitionObject(
222+
$this->operationDefinitionObjects[$operation . $dataType] = new OperationDefinitionObject(
221223
$dataDefName,
222224
$operation,
223225
$dataType,

0 commit comments

Comments
 (0)