Skip to content

Commit 11522e8

Browse files
committed
MQE-275: Implemented data uniqueness for input fields.
1 parent 45cad02 commit 11522e8

File tree

5 files changed

+54
-15
lines changed

5 files changed

+54
-15
lines changed

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

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,16 @@ private function getJsonDataArray($entityObject, $jsonDefMetadata = null)
145145
$jsonElementType = $jsonElement->getValue();
146146

147147
if (in_array($jsonElementType, ApiExecutor::PRIMITIVE_TYPES)) {
148-
$jsonArray[$jsonElement->getKey()] = $this->castValue(
149-
$jsonElementType,
150-
$entityObject->getDataByName($jsonElement->getKey())
151-
);
148+
$elementData = $entityObject->getDataByName($jsonElement->getKey());
149+
$elementUniquenessData = $entityObject->getUniquenessDataByName($jsonElement->getKey());
150+
if ($elementUniquenessData) {
151+
if ($elementUniquenessData == 'prefix') {
152+
$elementData = DataObjectHandler::UNIQUENESS_FUNCTION($entityObject->getName() . '.' . $jsonElement->getKey()) . $elementData;
153+
} elseif ($elementUniquenessData == 'suffix') {
154+
$elementData .= DataObjectHandler::UNIQUENESS_FUNCTION($entityObject->getName() . '.'. $jsonElement->getKey());
155+
}
156+
}
157+
$jsonArray[$jsonElement->getKey()] = $this->castValue($jsonElementType, $elementData);
152158
} else {
153159
$entityNamesOfType = $entityObject->getLinkedEntitiesOfType($jsonElementType);
154160

src/Magento/AcceptanceTestFramework/DataGenerator/Handlers/DataObjectHandler.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class DataObjectHandler implements ObjectHandlerInterface
3636
const DATA_ELEMENT_UNIQUENESS_ATTR = 'unique';
3737
const DATA_ELEMENT_UNIQUENESS_ATTR_VALUE_PREFIX = 'prefix';
3838
const DATA_ELEMENT_UNIQUENESS_ATTR_VALUE_SUFFIX = 'suffix';
39+
const UNIQUENESS_FUNCTION = 'msq';
3940

4041
const ARRAY_VALUES = 'array';
4142
const ARRAY_ELEMENT_KEY = 'key';

src/Magento/AcceptanceTestFramework/DataGenerator/Objects/EntityDataObject.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ public function getDataByName($dataName)
114114
{
115115
$name = strtolower($dataName);
116116

117-
if (array_key_exists($name, $this->data)) {
117+
if (!is_null($this->data) && array_key_exists($name, $this->data)) {
118118
return $this->data[$name];
119119
}
120120

src/Magento/AcceptanceTestFramework/Test/Objects/ActionObject.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ class ActionObject
2323
const ACTION_ATTRIBUTE_URL = 'url';
2424
const ACTION_ATTRIBUTE_SELECTOR = 'selector';
2525
const ACTION_ATTRIBUTE_VARIABLE_REGEX_PATTERN = '/{{[\w.]+}}/';
26-
const UNIQUENESS_FUNCTION = 'msq';
2726

2827
/**
2928
* The unique identifier for the action
@@ -294,7 +293,7 @@ private function findAndReplaceReferences($objectHandler, $inputString)
294293
}
295294

296295
//Check to see if field is defined as data if cannot be found in a different interface
297-
if ($replacement == null && get_class($obj) != EntityDataObject::class) {
296+
if ($replacement == null && get_class($objectHandler) != DataObjectHandler::class) {
298297
return $this->findAndReplaceReferences(DataObjectHandler::getInstance(), $inputString);
299298
}
300299

@@ -317,9 +316,9 @@ private function resolveEntityDataUniquenessReference($reference, $entityDataObj
317316
$entityName = $entityDataObject->getName();
318317

319318
if ($uniquenessData == DataObjectHandler::DATA_ELEMENT_UNIQUENESS_ATTR_VALUE_PREFIX) {
320-
$reference = self::UNIQUENESS_FUNCTION . '("' . $entityName . '.' . $entityKey . '")' . $reference;
319+
$reference = DataObjectHandler::UNIQUENESS_FUNCTION . '("' . $entityName . '.' . $entityKey . '")' . $reference;
321320
} elseif ($uniquenessData == DataObjectHandler::DATA_ELEMENT_UNIQUENESS_ATTR_VALUE_SUFFIX) {
322-
$reference .= self::UNIQUENESS_FUNCTION . '("' . $entityName . '.' . $entityKey . '")';
321+
$reference .= DataObjectHandler::UNIQUENESS_FUNCTION . '("' . $entityName . '.' . $entityKey . '")';
323322
}
324323
return $reference;
325324
}

src/Magento/AcceptanceTestFramework/Util/TestGenerator.php

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
use Magento\AcceptanceTestFramework\Test\Handlers\CestObjectHandler;
1010
use Magento\AcceptanceTestFramework\Test\Objects\ActionObject;
11+
use Magento\AcceptanceTestFramework\DataGenerator\Handlers\DataObjectHandler;
1112

1213
class TestGenerator
1314
{
@@ -289,13 +290,13 @@ private function generateStepsPhp($stepsObject, $stepsData, $hookObject = false)
289290
$input = sprintf("\"%s\"", $customActionAttributes['userInput']);
290291
} elseif (isset($customActionAttributes['userInput'])) {
291292
preg_match(
292-
'/' . ActionObject::UNIQUENESS_FUNCTION .'\("[\w]+.[\w]+"\)/',
293+
'/' . DataObjectHandler::UNIQUENESS_FUNCTION .'\("[\w]+.[\w]+"\)/',
293294
$customActionAttributes['userInput'],
294295
$matches
295296
);
296297
if (!empty($matches)) {
297298
$parts = preg_split(
298-
'/' . ActionObject::UNIQUENESS_FUNCTION . '\("[\w]+.[\w]+"\)/',
299+
'/' . DataObjectHandler::UNIQUENESS_FUNCTION . '\("[\w]+.[\w]+"\)/',
299300
$customActionAttributes['userInput'],
300301
-1
301302
);
@@ -1002,7 +1003,16 @@ private function generateStepsPhp($stepsObject, $stepsData, $hookObject = false)
10021003
default:
10031004
if ($returnVariable) {
10041005
if ($selector) {
1005-
if (isset($customActionAttributes['userInput'])) {
1006+
if ($input) {
1007+
$testSteps .= sprintf(
1008+
"\t\t$%s = $%s->%s(%s, %s);\n",
1009+
$returnVariable,
1010+
$actor,
1011+
$actionName,
1012+
$selector,
1013+
$input
1014+
);
1015+
} elseif (isset($customActionAttributes['userInput'])) {
10061016
$testSteps .= sprintf(
10071017
"\t\t$%s = $%s->%s(%s, \"%s\");\n",
10081018
$returnVariable,
@@ -1030,7 +1040,15 @@ private function generateStepsPhp($stepsObject, $stepsData, $hookObject = false)
10301040
);
10311041
}
10321042
} else {
1033-
if (isset($customActionAttributes['userInput'])) {
1043+
if ($input) {
1044+
$testSteps .= sprintf(
1045+
"\t\t$%s = $%s->%s(%s);\n",
1046+
$returnVariable,
1047+
$actor,
1048+
$actionName,
1049+
$input
1050+
);
1051+
} elseif (isset($customActionAttributes['userInput'])) {
10341052
$testSteps .= sprintf(
10351053
"\t\t$%s = $%s->%s(\"%s\");\n",
10361054
$returnVariable,
@@ -1052,7 +1070,15 @@ private function generateStepsPhp($stepsObject, $stepsData, $hookObject = false)
10521070
}
10531071
} else {
10541072
if ($selector) {
1055-
if (isset($customActionAttributes['userInput'])) {
1073+
if ($input) {
1074+
$testSteps .= sprintf(
1075+
"\t\t$%s->%s(%s, %s);\n",
1076+
$actor,
1077+
$actionName,
1078+
$selector,
1079+
$input
1080+
);
1081+
} elseif (isset($customActionAttributes['userInput'])) {
10561082
$testSteps .= sprintf(
10571083
"\t\t$%s->%s(%s, \"%s\");\n",
10581084
$actor,
@@ -1072,7 +1098,14 @@ private function generateStepsPhp($stepsObject, $stepsData, $hookObject = false)
10721098
$testSteps .= sprintf("\t\t$%s->%s(%s);\n", $actor, $actionName, $selector);
10731099
}
10741100
} else {
1075-
if (isset($customActionAttributes['userInput'])) {
1101+
if ($input) {
1102+
$testSteps .= sprintf(
1103+
"\t\t$%s->%s(%s);\n",
1104+
$actor,
1105+
$actionName,
1106+
$input
1107+
);
1108+
} elseif (isset($customActionAttributes['userInput'])) {
10761109
$testSteps .= sprintf(
10771110
"\t\t$%s->%s(\"%s\");\n",
10781111
$actor,

0 commit comments

Comments
 (0)