Skip to content

Commit 7e23df8

Browse files
KevinBKozantomreece
authored andcommitted
MQE-353: [Generator] Remove double curly braces from parameterized data references.
* MQE-353 CAP changes, along with exception bugfix found in last spring demo. * MQE-353 CR Changed ternary to be included in parent if.
1 parent 6d2d8c9 commit 7e23df8

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

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

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ class ActionObject
2525
const ACTION_ATTRIBUTE_URL = 'url';
2626
const ACTION_ATTRIBUTE_SELECTOR = 'selector';
2727
const ACTION_ATTRIBUTE_VARIABLE_REGEX_PARAMETER = '/\(.+\)/';
28-
const ACTION_ATTRIBUTE_VARIABLE_REGEX_PATTERN = '/{{[\w.\[\]]+}}/';
29-
const ACTION_ATTRIBUTE_VARIABLE_REGEX_NESTED = '/{{[\w.\[\]()\',${} ]+}}/';
28+
const ACTION_ATTRIBUTE_VARIABLE_REGEX_PATTERN = '/{{[\w.\[\]()\',$ ]+}}/';
3029

3130
/**
3231
* The unique identifier for the action
@@ -298,15 +297,7 @@ private function stripAndReturnParameters($reference)
298297
*/
299298
private function findAndReplaceReferences($objectHandler, $inputString)
300299
{
301-
//Determine if there are Parethesis and parameters. If not, use strict regex. If so, use nested regex.
302-
preg_match_all(ActionObject::ACTION_ATTRIBUTE_VARIABLE_REGEX_PARAMETER, $inputString, $variableMatches);
303-
if (empty($variableMatches[0])) {
304-
$regex = ActionObject::ACTION_ATTRIBUTE_VARIABLE_REGEX_PATTERN;
305-
} else {
306-
$regex = ActionObject::ACTION_ATTRIBUTE_VARIABLE_REGEX_NESTED;
307-
}
308-
preg_match_all($regex, $inputString, $matches);
309-
300+
preg_match_all(ActionObject::ACTION_ATTRIBUTE_VARIABLE_REGEX_PATTERN, $inputString, $matches);
310301
if (empty($matches[0])) {
311302
return $inputString;
312303
}
@@ -383,24 +374,38 @@ private function matchParameterReferences($reference, $parameters)
383374
{
384375
preg_match_all('/{{[\w.]+}}/', $reference, $varMatches);
385376
if (count($varMatches[0]) > count($parameters)) {
377+
if (is_array($parameters)) {
378+
$parametersGiven = implode(",", $parameters);
379+
} elseif ($parameters == null) {
380+
$parametersGiven = "NONE";
381+
} else {
382+
$parametersGiven = $parameters;
383+
}
386384
throw new TestReferenceException(
387385
"Parameter Resolution Failed: Not enough parameters given for reference " .
388-
$reference . ". Parameters Given: " . implode(",", $parameters)
386+
$reference . ". Parameters Given: " . $parametersGiven
389387
);
390388
} elseif (count($varMatches[0]) < count($parameters)) {
391389
throw new TestReferenceException(
392390
"Parameter Resolution Failed: Too many parameters given for reference " .
393-
$reference . ". Parameters Given: " . implode(",", $parameters)
391+
$reference . ". Parameters Given: " . implode(", ", $parameters)
394392
);
395393
}
396394

397395
//Attempt to Resolve {{data}} references to actual output.
396+
//If regex matched it means that it's either a 'StringLiteral' or $key.data$/$$key.data$$ reference.
397+
//Else assume it's a normal {{data.key}} reference and recurse through findAndReplace
398398
$resolvedParameters = [];
399399
foreach ($parameters as $parameter) {
400-
$resolvedParameters[] = $this->findAndReplaceReferences(
401-
DataObjectHandler::getInstance(),
402-
$parameter
403-
);
400+
preg_match_all("/[$'][\w.$]+[$']/", $parameter, $match);
401+
if (!empty($match[0])) {
402+
$resolvedParameters[] = ltrim(rtrim($parameter, "'"), "'");
403+
} else {
404+
$resolvedParameters[] = $this->findAndReplaceReferences(
405+
DataObjectHandler::getInstance(),
406+
'{{' . $parameter . '}}'
407+
);
408+
}
404409
}
405410

406411
$resolveIndex = 0;

0 commit comments

Comments
 (0)