9 use AspectMock\Test as AspectMock;
42 ->withDataFields([
'field1' =>
'testValue'])
44 $this->setEntityObjectHandlerReturn(
$entity);
46 $steps = $actionGroupUnderTest->getSteps(
null, self::ACTION_GROUP_MERGE_KEY);
47 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'literal']);
55 $this->setEntityObjectHandlerReturn(
function ($entityName) {
56 if ($entityName ==
"data2") {
62 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{arg1.field2}}'])])
66 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'data2'], self::ACTION_GROUP_MERGE_KEY);
67 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'testValue2']);
71 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{arg1}}'])])
75 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'data2.field2'], self::ACTION_GROUP_MERGE_KEY);
76 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'testValue2']);
80 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{simple}}'])])
84 $steps = $actionGroupUnderTest->getSteps([
'simple' =>
'override'], self::ACTION_GROUP_MERGE_KEY);
85 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'override']);
94 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{arg1.field2}}'])])
98 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'$data3$'], self::ACTION_GROUP_MERGE_KEY);
99 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'$data3.field2$']);
103 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{simple}}'])])
107 $steps = $actionGroupUnderTest->getSteps([
'simple' =>
'$data3.field2$'], self::ACTION_GROUP_MERGE_KEY);
108 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'$data3.field2$']);
116 $this->setEntityObjectHandlerReturn(
function ($entityName) {
117 if ($entityName ==
"data2") {
123 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{arg1}}'])])
127 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'data2.field2'], self::ACTION_GROUP_MERGE_KEY);
128 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'testValue2']);
136 $this->setEntityObjectHandlerReturn(
function ($entityName) {
137 if ($entityName ==
"data1") {
143 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{data1.field1}}'])])
146 $steps = $actionGroupUnderTest->getSteps(
null, self::ACTION_GROUP_MERGE_KEY);
147 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'testValue']);
156 $this->setEntityObjectHandlerReturn(
function ($entityName) {
157 if ($entityName ==
"data2") {
165 $sectionInstance = AspectMock::double(SectionObjectHandler::class, [
'getObject' => $section])->make();
166 AspectMock::double(SectionObjectHandler::class, [
'getInstance' => $sectionInstance]);
170 [
new ActionObject(
'action1',
'testAction', [
'selector' =>
'{{section1.element1(arg1.field2)}}'])]
176 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'data2'], self::ACTION_GROUP_MERGE_KEY);
177 $this->assertOnMergeKeyAndActionValue($steps, [
'selector' =>
'.selector testValue2']);
180 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'$data2$'], self::ACTION_GROUP_MERGE_KEY);
181 $this->assertOnMergeKeyAndActionValue($steps, [
'selector' =>
'.selector $data2.field2$']);
190 $this->setEntityObjectHandlerReturn(
function ($entityName) {
191 if ($entityName ==
"data2") {
199 $sectionInstance = AspectMock::double(SectionObjectHandler::class, [
'getObject' => $section])->make();
200 AspectMock::double(SectionObjectHandler::class, [
'getInstance' => $sectionInstance]);
204 [
new ActionObject(
'action1',
'testAction', [
'selector' =>
'{{section1.element1(simple)}}'])]
210 $steps = $actionGroupUnderTest->getSteps([
'simple' =>
'stringLiteral'], self::ACTION_GROUP_MERGE_KEY);
211 $this->assertOnMergeKeyAndActionValue($steps, [
'selector' =>
'.selector stringLiteral']);
214 $steps = $actionGroupUnderTest->getSteps([
'simple' =>
'data2.field2'], self::ACTION_GROUP_MERGE_KEY);
215 $this->assertOnMergeKeyAndActionValue($steps, [
'selector' =>
'.selector data2.field2']);
218 $steps = $actionGroupUnderTest->getSteps([
'simple' =>
'$someData.field1$'], self::ACTION_GROUP_MERGE_KEY);
219 $this->assertOnMergeKeyAndActionValue($steps, [
'selector' =>
'.selector $someData.field1$']);
228 ->withActionObjects([
new ActionObject(
'action1',
'testAction', [
'userInput' =>
'{{arg1.field1}}'])])
232 $steps = $actionGroupUnderTest->getSteps([
'arg1' =>
'$$someData$$'], self::ACTION_GROUP_MERGE_KEY);
233 $this->assertOnMergeKeyAndActionValue($steps, [
'userInput' =>
'$$someData.field1$$']);
245 $this->expectException(TestReferenceException::class);
246 $this->expectExceptionMessageRegExp(
'/Arguments missed .* for actionGroup/');
247 $actionGroupUnderTest->getSteps([
'arg2' =>
'data1'], self::ACTION_GROUP_MERGE_KEY);
259 $this->expectException(TestReferenceException::class);
260 $this->expectExceptionMessageRegExp(
'/Arguments missed .* for actionGroup/');
261 $actionGroupUnderTest->getSteps(
null, self::ACTION_GROUP_MERGE_KEY);
270 $createStepKey =
"createDataStepKey";
271 $updateStepKey =
"updateDataStepKey";
274 ->withActionObjects([
278 [
'selector' =>
'value']
283 [
'selector' =>
'value']
288 $result = $actionGroupUnderTest->extractStepKeys();
290 $this->assertContains($updateStepKey,
$result);
291 $this->assertContains($createStepKey,
$result);
292 $this->assertCount(2,
$result);
301 $clickStepKey =
"clickStepKey";
302 $fillFieldStepKey =
"fillFieldStepKey";
303 $clickAction =
"click";
304 $fillFieldAction =
"fillField";
307 ->withActionObjects([
308 new ActionObject($clickStepKey, $clickAction, [
'selector' =>
'value']),
309 new ActionObject($fillFieldStepKey, $fillFieldAction, [
'selector' =>
'value'])
313 $result = $actionGroupUnderTest->extractStepKeys();
315 $this->assertNotContains($clickStepKey,
$result);
316 $this->assertNotContains($fillFieldStepKey,
$result);
317 $this->assertCount(0,
$result);
327 private function setEntityObjectHandlerReturn($return)
329 $instance = AspectMock::double(DataObjectHandler::class, [
'getObject' => $return])
331 AspectMock::double(DataObjectHandler::class, [
'getInstance' => $instance]);
343 private function assertOnMergeKeyAndActionValue($actions, $expectedValue, $expectedMergeKey =
null)
345 $expectedMergeKey = $expectedMergeKey ??
347 $this->assertArrayHasKey($expectedMergeKey, $actions);
349 $action = $actions[$expectedMergeKey];
350 $this->assertEquals($expectedMergeKey, $action->getStepKey());
351 $this->assertEquals($expectedValue, $action->getCustomActionAttributes());
testGetStepsWithParameterizedSimpleArg()
testStepKeyReplacementFilteredIn()
const ACTION_GROUP_MERGE_KEY
testGetStepsWithDefaultCase()
testGetStepsWithOuterScopePersistence()
testGetStepsWithPersistedArgs()
testExceptionOnMissingActions()
testStepKeyReplacementFilteredOut()
static tearDownAfterClass()
const STEPKEY_REPLACEMENT_ENABLED_TYPES
testExceptionOnMissingArguments()
const DEFAULT_ACTION_OBJECT_NAME
testGetStepsWithParameterizedArg()
testGetStepsWithNoFieldArg()
testGetStepsWithCustomArgs()