Skip to content

Commit a81ce7d

Browse files
committed
MQE-371:[Framework] CestHookObject does order or replace {{}} references
- add support for order and ref replacement in before/after blocks
1 parent 779735f commit a81ce7d

File tree

4 files changed

+41
-33
lines changed

4 files changed

+41
-33
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public function getSteps($arguments)
6565
$args = array_merge($args, $arguments);
6666
}
6767

68-
return $mergeUtil->mergeStepsAndInsertWaits($this->getResolvedActionsWithArgs($args));
68+
return $mergeUtil->resolveActionSteps($this->getResolvedActionsWithArgs($args), true);
6969
}
7070

7171
/**

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
namespace Magento\FunctionalTestingFramework\Test\Objects;
88

9+
use Magento\FunctionalTestingFramework\Test\Util\ActionMergeUtil;
10+
911
/**
1012
* Class CestHookObject
1113
*/
@@ -61,7 +63,8 @@ public function getType()
6163
*/
6264
public function getActions()
6365
{
64-
return $this->actions;
66+
$mergeUtil = new ActionMergeUtil();
67+
return $mergeUtil->resolveActionSteps($this->actions);
6568
}
6669

6770
/**

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

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -99,34 +99,6 @@ public function getCustomData()
9999
public function getOrderedActions()
100100
{
101101
$mergeUtil = new ActionMergeUtil();
102-
$mergedSteps = $mergeUtil->mergeStepsAndInsertWaits($this->parsedSteps);
103-
return $this->extractActionGroups($mergedSteps);
104-
}
105-
106-
/**
107-
* Method to insert action group references into step flow
108-
*
109-
* @param array $mergedSteps
110-
* @return array
111-
*/
112-
private function extractActionGroups($mergedSteps)
113-
{
114-
$newOrderedList = [];
115-
116-
foreach ($mergedSteps as $key => $mergedStep) {
117-
/**@var ActionObject $mergedStep**/
118-
if ($mergedStep->getType() == ActionObjectExtractor::ACTION_GROUP_TAG) {
119-
$actionGroup = ActionGroupObjectHandler::getInstance()->getObject(
120-
$mergedStep->getCustomActionAttributes()[ActionObjectExtractor::ACTION_GROUP_REF]
121-
);
122-
$args = $mergedStep->getCustomActionAttributes()[ActionObjectExtractor::ACTION_GROUP_ARGUMENTS] ?? null;
123-
$actionsToMerge = $actionGroup->getSteps($args);
124-
$newOrderedList = $newOrderedList + $actionsToMerge;
125-
} else {
126-
$newOrderedList[$key] = $mergedStep;
127-
}
128-
}
129-
130-
return $newOrderedList;
102+
return $mergeUtil->resolveActionSteps($this->parsedSteps);
131103
}
132104
}

src/Magento/FunctionalTestingFramework/Test/Util/ActionMergeUtil.php

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
namespace Magento\FunctionalTestingFramework\Test\Util;
88

9+
use Magento\FunctionalTestingFramework\Test\Handlers\ActionGroupObjectHandler;
910
use Magento\FunctionalTestingFramework\Test\Objects\ActionObject;
1011

1112
/**
@@ -44,14 +45,46 @@ public function __construct()
4445
* Method to execute merge of steps and insert wait steps.
4546
*
4647
* @param array $parsedSteps
48+
* @param bool $skipActionGroupResolution
4749
* @return array
4850
*/
49-
public function mergeStepsAndInsertWaits($parsedSteps)
51+
public function resolveActionSteps($parsedSteps, $skipActionGroupResolution = false)
5052
{
5153
$this->mergeActions($parsedSteps);
5254
$this->insertWaits();
5355

54-
return $this->orderedSteps;
56+
if ($skipActionGroupResolution) {
57+
return $this->orderedSteps;
58+
}
59+
60+
return $this->resolveActionGroups($this->orderedSteps);
61+
}
62+
63+
/**
64+
* Method to resolve action group references and insert relevant actions into step flow
65+
*
66+
* @param array $mergedSteps
67+
* @return array
68+
*/
69+
private function resolveActionGroups($mergedSteps)
70+
{
71+
$newOrderedList = [];
72+
73+
foreach ($mergedSteps as $key => $mergedStep) {
74+
/**@var ActionObject $mergedStep**/
75+
if ($mergedStep->getType() == ActionObjectExtractor::ACTION_GROUP_TAG) {
76+
$actionGroup = ActionGroupObjectHandler::getInstance()->getObject(
77+
$mergedStep->getCustomActionAttributes()[ActionObjectExtractor::ACTION_GROUP_REF]
78+
);
79+
$args = $mergedStep->getCustomActionAttributes()[ActionObjectExtractor::ACTION_GROUP_ARGUMENTS] ?? null;
80+
$actionsToMerge = $actionGroup->getSteps($args);
81+
$newOrderedList = $newOrderedList + $actionsToMerge;
82+
} else {
83+
$newOrderedList[$key] = $mergedStep;
84+
}
85+
}
86+
87+
return $newOrderedList;
5588
}
5689

5790
/**

0 commit comments

Comments
 (0)