Skip to content

Commit fccb252

Browse files
committed
MQE-914: Multiple Uniqueness References On Same Entity Generates Incorrectly
- refactored uniquenessFunctionCall in TestGenerator; fixes bug. - updated verification tests to catch test case.
1 parent 320dc63 commit fccb252

File tree

6 files changed

+42
-51
lines changed

6 files changed

+42
-51
lines changed

dev/tests/verification/Resources/ActionGroupWithPassedArgumentAndStringSelectorParam.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ class ActionGroupWithPassedArgumentAndStringSelectorParamCest
2929
*/
3030
public function ActionGroupWithPassedArgumentAndStringSelectorParam(AcceptanceTester $I)
3131
{
32-
$I->see("John".msq("UniquePerson"), "#element .test1");
32+
$I->see("John" . msq("UniquePerson"), "#element .test1");
3333
}
3434
}

dev/tests/verification/Resources/ActionGroupWithSingleParameterSelectorFromPassedArgument.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ class ActionGroupWithSingleParameterSelectorFromPassedArgumentCest
2929
*/
3030
public function ActionGroupWithSingleParameterSelectorFromPassedArgument(AcceptanceTester $I)
3131
{
32-
$I->see("Doe", "#element .John".msq("UniquePerson"));
32+
$I->see("Doe", "#element .John" . msq("UniquePerson"));
3333
}
3434
}

dev/tests/verification/Resources/DataReplacementTest.txt

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,20 @@ class DataReplacementTestCest
3333
$I->conditionalClick("Doe", "#John", true);
3434
$I->amOnUrl("John.html");
3535
$I->searchAndMultiSelectOption("#selector", ["John", "Doe"]);
36-
$I->fillField("#selector", "StringBefore ".msq("uniqueData")."John StringAfter");
37-
$I->fillField("#".msq("uniqueData")."John", "input");
38-
$I->dragAndDrop("#".msq("uniqueData")."John", msq("uniqueData")."John");
39-
$I->conditionalClick(msq("uniqueData")."John", "#".msq("uniqueData")."John", true);
40-
$I->amOnUrl(msq("uniqueData")."John.html");
41-
$I->searchAndMultiSelectOption("#selector", [msq("uniqueData")."John", "Doe"]);
42-
$I->fillField("#selector", "StringBefore Doe".msq("uniqueData")." StringAfter");
43-
$I->fillField("#Doe".msq("uniqueData"), "input");
44-
$I->dragAndDrop("#Doe".msq("uniqueData"), "Doe".msq("uniqueData"));
45-
$I->conditionalClick("Doe".msq("uniqueData"), "#Doe".msq("uniqueData"), true);
46-
$I->amOnUrl("Doe".msq("uniqueData").".html");
47-
$I->searchAndMultiSelectOption("#selector", ["John", "Doe".msq("uniqueData")]);
48-
$I->searchAndMultiSelectOption("#selector", [msq("uniqueData")."John", "Doe".msq("uniqueData")]);
49-
$I->selectMultipleOptions("#Doe".msq("uniqueData"), "#element", [msq("uniqueData")."John", "Doe".msq("uniqueData")]);
36+
$I->fillField("#selector", "StringBefore " . msq("uniqueData") . "John StringAfter");
37+
$I->fillField("#" . msq("uniqueData") . "John", "input");
38+
$I->dragAndDrop("#" . msq("uniqueData") . "John", msq("uniqueData") . "John");
39+
$I->conditionalClick(msq("uniqueData") . "John", "#" . msq("uniqueData") . "John", true);
40+
$I->amOnUrl(msq("uniqueData") . "John.html");
41+
$I->searchAndMultiSelectOption("#selector", [msq("uniqueData") . "John", "Doe"]);
42+
$I->fillField("#selector", "StringBefore Doe" . msq("uniqueData") . " StringAfter");
43+
$I->fillField("#Doe" . msq("uniqueData"), "input");
44+
$I->dragAndDrop("#Doe" . msq("uniqueData"), "Doe" . msq("uniqueData"));
45+
$I->conditionalClick("Doe" . msq("uniqueData"), "#Doe" . msq("uniqueData"), true);
46+
$I->amOnUrl("Doe" . msq("uniqueData") . ".html");
47+
$I->searchAndMultiSelectOption("#selector", ["John", "Doe" . msq("uniqueData")]);
48+
$I->searchAndMultiSelectOption("#selector", [msq("uniqueData") . "John", "Doe" . msq("uniqueData")]);
49+
$I->selectMultipleOptions("#Doe" . msq("uniqueData"), "#element", [msq("uniqueData") . "John", "Doe" . msq("uniqueData")]);
5050
$I->fillField(".selector", "0");
5151
}
5252
}

dev/tests/verification/Resources/ParameterArrayTest.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ class ParameterArrayTestCest
3232
$simpleDataKey = new DataPersistenceHandler($simpleParamData, []);
3333
$simpleDataKey->createEntity();
3434
$I->searchAndMultiSelectOption("#selector", ["name"]);
35-
$I->searchAndMultiSelectOption("#selector", [msq("simpleParamData")."prename"]);
36-
$I->searchAndMultiSelectOption("#selector", ["postname".msq("simpleParamData")]);
35+
$I->searchAndMultiSelectOption("#selector", [msq("simpleParamData") . "prename"]);
36+
$I->searchAndMultiSelectOption("#selector", ["postname" . msq("simpleParamData")]);
3737
$I->searchAndMultiSelectOption("#selector", [$simpleDataKey->getCreatedDataByName('name')]);
3838
$I->searchAndMultiSelectOption("#selector", ["name", $simpleDataKey->getCreatedDataByName('name')]);
3939
$I->searchAndMultiSelectOption("#selector", ['someKey' => $simpleDataKey->getCreatedDataByName('name')]);
4040
$I->searchAndMultiSelectOption("#selector", ['someKey' => "name"]);
41-
$I->searchAndMultiSelectOption("#selector", ['someKey' => msq("simpleParamData")."prename"]);
42-
$I->searchAndMultiSelectOption("#selector", ['someKey' => "postname".msq("simpleParamData")]);
41+
$I->searchAndMultiSelectOption("#selector", ['someKey' => msq("simpleParamData") . "prename"]);
42+
$I->searchAndMultiSelectOption("#selector", ['someKey' => "postname" . msq("simpleParamData")]);
4343
$I->unselectOption("#selector", ['foo']);
4444
$I->unselectOption("#selector", ['foo', 'bar']);
4545
$I->unselectOption("#selector", ["name"]);
46-
$I->unselectOption("#selector", [msq("simpleParamData")."prename"]);
47-
$I->unselectOption("#selector", ["postname".msq("simpleParamData")]);
46+
$I->unselectOption("#selector", [msq("simpleParamData") . "prename"]);
47+
$I->unselectOption("#selector", ["postname" . msq("simpleParamData")]);
4848
$I->unselectOption("#selector", [$simpleDataKey->getCreatedDataByName('name')]);
4949
$I->unselectOption("#selector", ["name", $simpleDataKey->getCreatedDataByName('name')]);
5050
}

dev/tests/verification/Resources/SectionReplacementTest.txt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ class SectionReplacementTestCest
3838
$I->click("#John .Doe");
3939
$I->click("#John-Doe .Tiberius");
4040
$I->click("#John-Doe .John [Tiberius]");
41-
$I->click("#element .".msq("uniqueData")."John");
42-
$I->click("#".msq("uniqueData")."John .stringLiteral2");
43-
$I->click("#".msq("uniqueData")."John-stringLiteral2 .stringLiteral3");
44-
$I->click("#".msq("uniqueData")."John-stringLiteral2 .");
45-
$I->click("#element .Doe".msq("uniqueData"));
46-
$I->click("#Doe".msq("uniqueData")." .stringLiteral2");
47-
$I->click("#Doe".msq("uniqueData")."-stringLiteral2 .stringLiteral3");
48-
$I->click("#Doe".msq("uniqueData")."-stringLiteral2 .Doe");
41+
$I->click("#element ." . msq("uniqueData") . "John");
42+
$I->click("#" . msq("uniqueData") . "John .stringLiteral2");
43+
$I->click("#" . msq("uniqueData") . "John-stringLiteral2 .stringLiteral3");
44+
$I->click("#" . msq("uniqueData") . "John-stringLiteral2 ." . msq("uniqueData") . "John [stringLiteral3]");
45+
$I->click("#element .Doe" . msq("uniqueData"));
46+
$I->click("#Doe" . msq("uniqueData") . " .stringLiteral2");
47+
$I->click("#Doe" . msq("uniqueData") . "-stringLiteral2 .stringLiteral3");
48+
$I->click("#Doe" . msq("uniqueData") . "-stringLiteral2 .Doe" . msq("uniqueData") . " [stringLiteral3]");
4949
$I->amGoingTo("create entity that has the stepKey: createdData");
5050
$simpleData = DataObjectHandler::getInstance()->getObject("simpleData");
5151
$createdData = new DataPersistenceHandler($simpleData, []);
@@ -60,7 +60,7 @@ class SectionReplacementTestCest
6060
$I->click("#John-Doe .John [Tiberius]");
6161
$I->click("#stringLiteral1-" . $createdData->getCreatedDataByName('firstname') . " .John");
6262
$I->click("#stringLiteral1-" . $createdData->getCreatedDataByName('firstname') . " .{$data}");
63-
$I->click("#stringLiteral1-" . $createdData->getCreatedDataByName('firstname') . " .".msq("uniqueData")."John");
64-
$I->click("#stringLiteral1-" . $createdData->getCreatedDataByName('firstname') . " .Doe".msq("uniqueData"));
63+
$I->click("#stringLiteral1-" . $createdData->getCreatedDataByName('firstname') . " ." . msq("uniqueData") . "John");
64+
$I->click("#stringLiteral1-" . $createdData->getCreatedDataByName('firstname') . " .Doe" . msq("uniqueData"));
6565
}
6666
}

src/Magento/FunctionalTestingFramework/Util/TestGenerator.php

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1565,26 +1565,17 @@ private function addUniquenessToParamArray($input)
15651565
*/
15661566
private function addUniquenessFunctionCall($input)
15671567
{
1568-
$output = '';
1569-
1570-
preg_match('/' . EntityDataObject::CEST_UNIQUE_FUNCTION . '\("[\w]+"\)/', $input, $matches);
1571-
if (!empty($matches)) {
1572-
$parts = preg_split('/' . EntityDataObject::CEST_UNIQUE_FUNCTION . '\("[\w]+"\)/', $input, -1);
1573-
for ($i = 0; $i < count($parts); $i++) {
1574-
$parts[$i] = $this->stripWrappedQuotes($parts[$i]);
1575-
}
1576-
if (!empty($parts[0])) {
1577-
$output = $this->wrapWithDoubleQuotes($parts[0]);
1578-
}
1579-
$output .= $output === '' ? $matches[0] : '.' . $matches[0];
1580-
if (!empty($parts[1])) {
1581-
$output .= '.' . $this->wrapWithDoubleQuotes($parts[1]);
1582-
}
1583-
} else {
1584-
$output = $this->wrapWithDoubleQuotes($input);
1568+
$output = $this->wrapWithDoubleQuotes($input);
1569+
1570+
//Match on msq(\"entityName\")
1571+
preg_match_all('/' . EntityDataObject::CEST_UNIQUE_FUNCTION . '\(\\\\"[\w]+\\\\"\)/', $output, $matches);
1572+
foreach ($matches[0] as $match) {
1573+
preg_match('/\\\\"([\w]+)\\\\"/', $match, $entityMatch);
1574+
$entity = $entityMatch[1];
1575+
$output = str_replace($match, '" . msq("' . $entity . '") . "', $output);
15851576
}
1586-
1587-
return $output;
1577+
// trim unnecessary "" . and . ""
1578+
return preg_replace('/(?(?<![\\\\])"" \. )| \. ""/', "", $output);
15881579
}
15891580

15901581
/**

0 commit comments

Comments
 (0)