Skip to content

Commit 918b2f9

Browse files
committed
MQE-251:[Data Input] Change Data Accessor classes to implement interface
- change classes to be defined implementations of DataHandler Interface - change references to DataHandler interfaces to reference new classes - change logic in ActionObject to consolidate parameter resolution.
1 parent 28a3065 commit 918b2f9

34 files changed

+1410
-884
lines changed

etc/di.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@
8282

8383
<virtualType name="Magento\AcceptanceTestFramework\Config\SchemaLocator\Page" type="Magento\AcceptanceTestFramework\Config\SchemaLocator">
8484
<arguments>
85-
<argument name="schemaPath" xsi:type="string">Magento/AcceptanceTestFramework/PageObject/etc/PageObject.xsd</argument>
85+
<argument name="schemaPath" xsi:type="string">Magento/AcceptanceTestFramework/Page/etc/PageObject.xsd</argument>
8686
</arguments>
8787
</virtualType>
8888
<virtualType name="Magento\AcceptanceTestFramework\Config\SchemaLocator\Section" type="Magento\AcceptanceTestFramework\Config\SchemaLocator">
8989
<arguments>
90-
<argument name="schemaPath" xsi:type="string">Magento/AcceptanceTestFramework/PageObject/etc/SectionObject.xsd</argument>
90+
<argument name="schemaPath" xsi:type="string">Magento/AcceptanceTestFramework/Page/etc/SectionObject.xsd</argument>
9191
</arguments>
9292
</virtualType>
9393
<virtualType name="Magento\AcceptanceTestFramework\Config\Reader\Page" type="Magento\AcceptanceTestFramework\Config\Reader\Filesystem">
@@ -176,7 +176,7 @@
176176

177177
<!-- Configuration for Data Operation Metadata.xml -->
178178

179-
<type name="Magento\AcceptanceTestFramework\DataGenerator\Parsers\MetadataParser">
179+
<type name="Magento\AcceptanceTestFramework\DataGenerator\Parsers\OperationMetadataParser">
180180
<arguments>
181181
<argument name="metadata" xsi:type="object">Magento\AcceptanceTestFramework\DataProfile\Config\Metadata</argument>
182182
</arguments>
@@ -197,9 +197,9 @@
197197
<argument name="converter" xsi:type="object">Magento\AcceptanceTestFramework\Config\Converter</argument>
198198
<argument name="schemaLocator" xsi:type="object">Magento\AcceptanceTestFramework\Config\SchemaLocator\Metadata</argument>
199199
<argument name="idAttributes" xsi:type="array">
200-
<item name="/config/metadata" xsi:type="string">name</item>
201-
<item name="/config/metadata/entry" xsi:type="string">key</item>
202-
<item name="/config/metadata/array" xsi:type="string">key</item>
200+
<item name="/config/operation" xsi:type="string">name</item>
201+
<item name="/config/operation/entry" xsi:type="string">key</item>
202+
<item name="/config/operation/array" xsi:type="string">key</item>
203203
</argument>
204204
<argument name="fileName" xsi:type="string">*-meta.xml</argument>
205205
<argument name="defaultScope" xsi:type="string">Metadata</argument>

src/Magento/AcceptanceTestFramework/DataGenerator/Api/ApiExecutor.php

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,37 @@
22

33
namespace Magento\AcceptanceTestFramework\DataGenerator\Api;
44

5-
use Magento\AcceptanceTestFramework\DataGenerator\Managers\DataManager;
6-
use Magento\AcceptanceTestFramework\DataGenerator\Managers\JsonDefinitionManager;
5+
use Magento\AcceptanceTestFramework\DataGenerator\Handlers\DataObjectHandler;
6+
use Magento\AcceptanceTestFramework\DataGenerator\Handlers\JsonDefinitionObjectHandler;
77
use Magento\AcceptanceTestFramework\DataGenerator\Objects\EntityDataObject;
8+
use Magento\AcceptanceTestFramework\DataGenerator\Objects\JsonDefinition;
89
use Magento\AcceptanceTestFramework\Util\ApiClientUtil;
910

1011
class ApiExecutor
1112
{
13+
/**
14+
* Describes the operation for the executor ('create','update','delete')
15+
* @var string $operation
16+
**/
1217
private $operation;
18+
19+
/**
20+
* The entity object data being created, updated, or deleted.
21+
* @var EntityDataObject $entityObject
22+
*/
1323
private $entityObject;
24+
25+
/**
26+
* The json definitions used to map the operation.
27+
* @var JsonDefinition $jsonDefinition
28+
*/
1429
private $jsonDefinition;
1530

16-
private $primitives = ['string', 'boolean', 'integer', 'double', 'array'];
31+
const PRIMITIVE_TYPES = ['string', 'boolean', 'integer', 'double', 'array'];
1732

1833
/**
1934
* ApiSubObject constructor.
35+
* @constructor
2036
* @param string $operation
2137
* @param EntityDataObject $entityObject
2238
*/
@@ -25,12 +41,16 @@ public function __construct($operation, $entityObject)
2541
$this->operation = $operation;
2642
$this->entityObject = $entityObject;
2743

28-
$this->jsonDefinition = JsonDefinitionManager::getInstance()->getJsonDefinition(
44+
$this->jsonDefinition = JsonDefinitionObjectHandler::getInstance()->getJsonDefinition(
2945
$this->operation,
3046
$this->entityObject->getType()
3147
);
3248
}
3349

50+
/**
51+
* Executes an api request based on parameters given by constructor.
52+
* @return string | null
53+
*/
3454
public function executeRequest()
3555
{
3656
$apiClientUrl = $this->jsonDefinition->getApiUrl();
@@ -91,23 +111,23 @@ private function getAuthorizationHeader($authUrl)
91111
* recursively forming an array which represents the json structure for the api of the desired type.
92112
*
93113
* @param EntityDataObject $entityObject
94-
* @param Array $jsonDefMetadata
114+
* @param array $jsonDefMetadata
95115
*
96116
* @return array
97117
*/
98118
private function getJsonDataArray($entityObject, $jsonDefMetadata = null)
99119
{
100-
$jsonArrayMetadata = !$jsonDefMetadata ? JsonDefinitionManager::getInstance()->getJsonDefinition(
120+
$jsonArrayMetadata = !$jsonDefMetadata ? JsonDefinitionObjectHandler::getInstance()->getJsonDefinition(
101121
$this->operation,
102122
$entityObject->getType()
103123
)->getJsonMetadata() : $jsonDefMetadata;
104124

105-
$jsonArray = array();
125+
$jsonArray = [];
106126

107127
foreach ($jsonArrayMetadata as $jsonElement) {
108128
$jsonElementType = $jsonElement->getValue();
109129

110-
if (in_array($jsonElementType, $this->primitives)) {
130+
if (in_array($jsonElementType, ApiExecutor::PRIMITIVE_TYPES)) {
111131
$jsonArray[$jsonElement->getKey()] = $this->castValue(
112132
$jsonElementType,
113133
$entityObject->getDataByName($jsonElement->getKey())
@@ -116,7 +136,7 @@ private function getJsonDataArray($entityObject, $jsonDefMetadata = null)
116136
$entityNamesOfType = $entityObject->getLinkedEntitiesOfType($jsonElementType);
117137

118138
foreach ($entityNamesOfType as $entityName) {
119-
$linkedEntityObj = DataManager::getInstance()->getEntity($entityName);
139+
$linkedEntityObj = DataObjectHandler::getInstance()->getObject($entityName);
120140
$jsonDataSubArray = self::getJsonDataArray($linkedEntityObj);
121141

122142
if ($jsonElement->getType() == 'array') {
@@ -131,13 +151,24 @@ private function getJsonDataArray($entityObject, $jsonDefMetadata = null)
131151
return $jsonArray;
132152
}
133153

134-
private function getEncodedJsonString()
154+
/**
155+
* This function retrieves an array representative of json body for a request and returns it encoded as a string.
156+
* @return string
157+
*/
158+
public function getEncodedJsonString()
135159
{
136160
$jsonArray = $this->getJsonDataArray($this->entityObject, $this->jsonDefinition->getJsonMetadata());
137161

138162
return json_encode([$this->entityObject->getType() => $jsonArray], JSON_PRETTY_PRINT);
139163
}
140164

165+
/**
166+
* This function takes a string value and its corresponding type and returns the string cast
167+
* into its the type passed.
168+
* @param string $type
169+
* @param string $value
170+
* @return bool|float|int|string
171+
*/
141172
private function castValue($type, $value)
142173
{
143174
$newVal = $value;
@@ -158,4 +189,4 @@ private function castValue($type, $value)
158189

159190
return $newVal;
160191
}
161-
}
192+
}

src/Magento/AcceptanceTestFramework/DataGenerator/Api/EntityApiHandler.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,32 @@
66

77
class EntityApiHandler
88
{
9+
/**
10+
* Entity object data to use for create, delete, or update.
11+
* @var EntityDataObject $entityObject
12+
*/
913
private $entityObject;
14+
15+
/**
16+
* Resulting created object from create or update.
17+
* @var EntityDataObject $createdObject
18+
*/
1019
private $createdObject;
1120

1221
/**
1322
* ApiPersistenceHandler constructor.
23+
* @constructor
1424
* @param EntityDataObject $entityObject
1525
*/
1626
public function __construct($entityObject)
1727
{
1828
$this->entityObject = $entityObject;
1929
}
2030

31+
/**
32+
* Function which executes a create request based on specific operation metadata
33+
* @return string | false
34+
*/
2135
public function createEntity()
2236
{
2337
$apiExecutor = new ApiExecutor('create', $this->entityObject);
@@ -29,8 +43,14 @@ public function createEntity()
2943
json_decode($result, true),
3044
null
3145
);
46+
47+
return $result;
3248
}
3349

50+
/**
51+
* Function which executes a delete request based on specific operation metadata
52+
* @return string | false
53+
*/
3454
public function deleteEntity()
3555
{
3656
$apiExecutor = new ApiExecutor('delete', $this->createdObject);

src/Magento/AcceptanceTestFramework/DataGenerator/DataGeneratorConstants.php

Lines changed: 0 additions & 22 deletions
This file was deleted.

0 commit comments

Comments
 (0)