Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ActionMergeUtilTest.php
Go to the documentation of this file.
1 <?php
7 
8 use AspectMock\Test as AspectMock;
15 use tests\unit\Util\DataObjectHandlerReflectionUtil;
17 
19 {
24  public function setUp()
25  {
26  TestLoggingUtil::getInstance()->setMockLoggingUtil();
27  }
28 
35  {
36  $actions = [];
37  $actionsLength = 11;
38 
39  $testObjNamePosBeforeFirst = 'testBeforeBeforeMerge';
40  $testObjNamePosFirst = 'testBeforeMerge0';
41  $testObjNamePosEnd = 'testAfterMerge10';
42  $testObjNamePosAfterEnd = 'testAfterAfterMerge10';
43 
44  for ($i = 1; $i < $actionsLength; $i++) {
45  $stepKey = 'stepKey'. $i;
46  $type = 'testType';
47  $actionAttributes = [];
48 
49  $actions[] = new ActionObject($stepKey, $type, $actionAttributes);
50  }
51 
52  $actions[] = new ActionObject(
53  $testObjNamePosAfterEnd,
54  'stepType',
55  [],
56  $testObjNamePosEnd,
58  );
59  $actions[] = new ActionObject(
60  $testObjNamePosBeforeFirst,
61  'stepType',
62  [],
63  $testObjNamePosFirst,
65  );
66  $actions[] = new ActionObject(
67  $testObjNamePosFirst,
68  'stepType',
69  [],
70  'stepKey1',
72  );
73  $actions[] = new ActionObject(
74  $testObjNamePosEnd,
75  'stepType',
76  [],
77  'stepKey' . (string)($actionsLength - 1),
79  );
80 
81  $mergeUtil = new ActionMergeUtil("actionMergeUtilTest", "TestCase");
82  $orderedActions = $mergeUtil->resolveActionSteps($actions);
83  $orderedActionKeys = array_keys($orderedActions);
84 
85  $this->assertEquals($testObjNamePosBeforeFirst, $orderedActionKeys[0]);
86  $this->assertEquals($testObjNamePosFirst, $orderedActionKeys[1]);
87  $this->assertEquals($testObjNamePosEnd, $orderedActionKeys[$actionsLength + 1]);
88  $this->assertEquals($testObjNamePosAfterEnd, $orderedActionKeys[$actionsLength + 2]);
89  }
90 
97  {
98  $dataObjectName = 'myObject';
99  $dataObjectType = 'testObject';
100  $dataFieldName = 'myfield';
101  $dataFieldValue = 'myValue';
102  $userInputKey = "userInput";
103  $userinputValue = "{{" . "${dataObjectName}.${dataFieldName}}}";
104  $actionName = "myAction";
105  $actionType = "myCustomType";
106 
107  // Set up mock data object
108  $mockData = [$dataFieldName => $dataFieldValue];
109  $mockDataObject = new EntityDataObject($dataObjectName, $dataObjectType, $mockData, null, null, null);
110 
111  // Set up mock DataObject Handler
112  $mockDOHInstance = AspectMock::double(DataObjectHandler::class, ['getObject' => $mockDataObject])->make();
113  AspectMock::double(DataObjectHandler::class, ['getInstance' => $mockDOHInstance]);
114 
115  // Create test object and action object
116  $actionAttributes = [$userInputKey => $userinputValue];
117  $actions[$actionName] = new ActionObject($actionName, $actionType, $actionAttributes);
118 
119  $this->assertEquals($userinputValue, $actions[$actionName]->getCustomActionAttributes()[$userInputKey]);
120 
121  $mergeUtil = new ActionMergeUtil("test", "TestCase");
122  $resolvedActions = $mergeUtil->resolveActionSteps($actions);
123 
124  $this->assertEquals($dataFieldValue, $resolvedActions[$actionName]->getCustomActionAttributes()[$userInputKey]);
125  }
126 
132  public function testNoActionException()
133  {
134  $actionObjects = [];
135 
136  $actionObjects[] = new ActionObject('actionKey1', 'bogusType', []);
137  $actionObjects[] = new ActionObject(
138  'actionKey2',
139  'bogusType',
140  [],
141  'badActionReference',
143  );
144 
145  $this->expectException(\Magento\FunctionalTestingFramework\Exceptions\XmlException::class);
146 
147  $actionMergeUtil = new ActionMergeUtil("actionMergeUtilTest", "TestCase");
148  $actionMergeUtil->resolveActionSteps($actionObjects);
149  }
150 
156  public function testInsertWait()
157  {
158  $actionObjectOne = new ActionObject('actionKey1', 'bogusType', []);
159  $actionObjectOne->setTimeout(42);
160  $actionObjects = [$actionObjectOne];
161 
162  $actionMergeUtil = new ActionMergeUtil("actionMergeUtilTest", "TestCase");
163  $result = $actionMergeUtil->resolveActionSteps($actionObjects);
164 
165  $actual = $result['actionKey1WaitForPageLoad'];
166  $expected = new ActionObject(
167  'actionKey1WaitForPageLoad',
168  'waitForPageLoad',
169  ['timeout' => 42],
170  'actionKey1',
171  0
172  );
173  $this->assertEquals($expected, $actual);
174  }
175 
180  public static function tearDownAfterClass()
181  {
182  TestLoggingUtil::getInstance()->clearMockLoggingUtil();
183  }
184 }
$type
Definition: item.phtml:13
$i
Definition: gallery.phtml:31