2
2
3
3
namespace Magento \AcceptanceTestFramework \DataGenerator \Api ;
4
4
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 ;
7
7
use Magento \AcceptanceTestFramework \DataGenerator \Objects \EntityDataObject ;
8
+ use Magento \AcceptanceTestFramework \DataGenerator \Objects \JsonDefinition ;
8
9
use Magento \AcceptanceTestFramework \Util \ApiClientUtil ;
9
10
10
11
class ApiExecutor
11
12
{
13
+ /**
14
+ * Describes the operation for the executor ('create','update','delete')
15
+ * @var string $operation
16
+ **/
12
17
private $ operation ;
18
+
19
+ /**
20
+ * The entity object data being created, updated, or deleted.
21
+ * @var EntityDataObject $entityObject
22
+ */
13
23
private $ entityObject ;
24
+
25
+ /**
26
+ * The json definitions used to map the operation.
27
+ * @var JsonDefinition $jsonDefinition
28
+ */
14
29
private $ jsonDefinition ;
15
30
16
- private $ primitives = ['string ' , 'boolean ' , 'integer ' , 'double ' , 'array ' ];
31
+ const PRIMITIVE_TYPES = ['string ' , 'boolean ' , 'integer ' , 'double ' , 'array ' ];
17
32
18
33
/**
19
34
* ApiSubObject constructor.
35
+ * @constructor
20
36
* @param string $operation
21
37
* @param EntityDataObject $entityObject
22
38
*/
@@ -25,12 +41,16 @@ public function __construct($operation, $entityObject)
25
41
$ this ->operation = $ operation ;
26
42
$ this ->entityObject = $ entityObject ;
27
43
28
- $ this ->jsonDefinition = JsonDefinitionManager ::getInstance ()->getJsonDefinition (
44
+ $ this ->jsonDefinition = JsonDefinitionObjectHandler ::getInstance ()->getJsonDefinition (
29
45
$ this ->operation ,
30
46
$ this ->entityObject ->getType ()
31
47
);
32
48
}
33
49
50
+ /**
51
+ * Executes an api request based on parameters given by constructor.
52
+ * @return string | null
53
+ */
34
54
public function executeRequest ()
35
55
{
36
56
$ apiClientUrl = $ this ->jsonDefinition ->getApiUrl ();
@@ -91,23 +111,23 @@ private function getAuthorizationHeader($authUrl)
91
111
* recursively forming an array which represents the json structure for the api of the desired type.
92
112
*
93
113
* @param EntityDataObject $entityObject
94
- * @param Array $jsonDefMetadata
114
+ * @param array $jsonDefMetadata
95
115
*
96
116
* @return array
97
117
*/
98
118
private function getJsonDataArray ($ entityObject , $ jsonDefMetadata = null )
99
119
{
100
- $ jsonArrayMetadata = !$ jsonDefMetadata ? JsonDefinitionManager ::getInstance ()->getJsonDefinition (
120
+ $ jsonArrayMetadata = !$ jsonDefMetadata ? JsonDefinitionObjectHandler ::getInstance ()->getJsonDefinition (
101
121
$ this ->operation ,
102
122
$ entityObject ->getType ()
103
123
)->getJsonMetadata () : $ jsonDefMetadata ;
104
124
105
- $ jsonArray = array () ;
125
+ $ jsonArray = [] ;
106
126
107
127
foreach ($ jsonArrayMetadata as $ jsonElement ) {
108
128
$ jsonElementType = $ jsonElement ->getValue ();
109
129
110
- if (in_array ($ jsonElementType , $ this -> primitives )) {
130
+ if (in_array ($ jsonElementType , ApiExecutor:: PRIMITIVE_TYPES )) {
111
131
$ jsonArray [$ jsonElement ->getKey ()] = $ this ->castValue (
112
132
$ jsonElementType ,
113
133
$ entityObject ->getDataByName ($ jsonElement ->getKey ())
@@ -116,7 +136,7 @@ private function getJsonDataArray($entityObject, $jsonDefMetadata = null)
116
136
$ entityNamesOfType = $ entityObject ->getLinkedEntitiesOfType ($ jsonElementType );
117
137
118
138
foreach ($ entityNamesOfType as $ entityName ) {
119
- $ linkedEntityObj = DataManager ::getInstance ()->getEntity ($ entityName );
139
+ $ linkedEntityObj = DataObjectHandler ::getInstance ()->getObject ($ entityName );
120
140
$ jsonDataSubArray = self ::getJsonDataArray ($ linkedEntityObj );
121
141
122
142
if ($ jsonElement ->getType () == 'array ' ) {
@@ -131,13 +151,24 @@ private function getJsonDataArray($entityObject, $jsonDefMetadata = null)
131
151
return $ jsonArray ;
132
152
}
133
153
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 ()
135
159
{
136
160
$ jsonArray = $ this ->getJsonDataArray ($ this ->entityObject , $ this ->jsonDefinition ->getJsonMetadata ());
137
161
138
162
return json_encode ([$ this ->entityObject ->getType () => $ jsonArray ], JSON_PRETTY_PRINT );
139
163
}
140
164
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
+ */
141
172
private function castValue ($ type , $ value )
142
173
{
143
174
$ newVal = $ value ;
@@ -158,4 +189,4 @@ private function castValue($type, $value)
158
189
159
190
return $ newVal ;
160
191
}
161
- }
192
+ }
0 commit comments