9 use AspectMock\Test as AspectMock;
41 $actionObject =
new ActionObject(
'stepKey',
'type', [],
null,
'before');
42 $this->assertEquals(0, $actionObject->getOrderOffset());
50 $actionObject =
new ActionObject(
'stepKey',
'type', [],
null,
'after');
51 $this->assertEquals(1, $actionObject->getOrderOffset());
60 $actionObject =
new ActionObject(
'merge123',
'fillField', [
61 'selector' =>
'{{SectionObject.elementObject}}',
62 'userInput' =>
'Hello world' 64 $elementObject =
new ElementObject(
'elementObject',
'button',
'#replacementSelector',
null,
'42',
false);
65 $this->mockSectionHandlerWithElement($elementObject);
68 $actionObject->resolveReferences();
72 'selector' =>
'#replacementSelector',
73 'userInput' =>
'Hello world' 75 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
83 $actionObject =
new ActionObject(
'key123',
'fillField', [
84 'selector' =>
"{{SectionObject.elementObject('stringliteral')}}",
85 'userInput' =>
'Input' 87 $elementObject =
new ElementObject(
'elementObject',
'button',
'#{{var1}}',
null,
'42',
true);
88 $this->mockSectionHandlerWithElement($elementObject);
91 $actionObject->resolveReferences();
95 'selector' =>
'#stringliteral',
96 'userInput' =>
'Input' 98 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
106 $actionObject =
new ActionObject(
'key123',
'fillField', [
107 'selector' =>
"{{SectionObject.elementObject(dataObject.key)}}",
108 'userInput' =>
'Input' 112 $elementObject =
new ElementObject(
'elementObject',
'button',
'#{{var1}}',
null,
'42',
true);
113 $this->mockSectionHandlerWithElement($elementObject);
116 $dataObject =
new EntityDataObject(
'dataObject',
'dataType', [
"key" =>
'myValue'],
null,
null,
null);
117 $this->mockDataHandlerWithData($dataObject);
120 $actionObject->resolveReferences();
124 'selector' =>
'#myValue',
125 'userInput' =>
'Input' 127 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
135 $actionObject =
new ActionObject(
'key123',
'fillField', [
136 'selector' =>
'{{SectionObject.elementObject($data.key$)}}',
137 'userInput' =>
'Input' 141 $elementObject =
new ElementObject(
'elementObject',
'button',
'#{{var1}}',
null,
'42',
true);
142 $this->mockSectionHandlerWithElement($elementObject);
145 $actionObject->resolveReferences();
149 'selector' =>
'#$data.key$',
150 'userInput' =>
'Input' 152 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
160 $actionObject =
new ActionObject(
'key123',
'fillField', [
161 'selector' =>
"{{SectionObject.elementObject('stringLiteral', data.key, \$data.key\$)}}",
162 'userInput' =>
'Input' 166 $elementObject =
new ElementObject(
'elementObject',
'button',
'#{{var1}}[{{var2}},{{var3}}]',
null,
'42',
true);
167 $this->mockSectionHandlerWithElement($elementObject);
170 $dataObject =
new EntityDataObject(
'dataObject',
'dataType', [
"key" =>
'myValue'],
null,
null,
null);
171 $this->mockDataHandlerWithData($dataObject);
174 $actionObject->resolveReferences();
178 'selector' =>
'#stringLiteral[myValue,$data.key$]',
179 'userInput' =>
'Input' 181 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
191 'selector' =>
'{{SectionObject.elementObject}}' 193 $elementObject =
new ElementObject(
'elementObject',
'button',
'#replacementSelector',
null,
'42',
false);
194 $this->mockSectionHandlerWithElement($elementObject);
197 $actionObject->resolveReferences();
200 $this->assertEquals(42, $actionObject->getTimeout());
211 $actionObject =
new ActionObject(
'merge123',
'amOnPage', [
212 'url' =>
'{{PageObject.url}}' 214 $pageObject =
new PageObject(
'PageObject',
'/replacement/url.html',
'Test', [],
false,
"test");
215 $instance = AspectMock::double(PageObjectHandler::class, [
'getObject' => $pageObject])
217 AspectMock::double(PageObjectHandler::class, [
'getInstance' => $instance]);
220 $actionObject->resolveReferences();
224 'url' =>
'/replacement/url.html' 226 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
237 $actionObject =
new ActionObject(
'merge123',
'amOnPage', [
238 'url' =>
'{{PageObject}}' 240 $pageObject =
new PageObject(
'PageObject',
'/replacement/url.html',
'Test', [],
false,
"test");
241 $pageObjectList = [
"PageObject" => $pageObject];
242 $instance = AspectMock::double(
243 PageObjectHandler::class,
244 [
'getObject' => $pageObject,
'getAllObjects' => $pageObjectList]
246 AspectMock::double(PageObjectHandler::class, [
'getInstance' => $instance]);
249 $actionObject->resolveReferences();
254 "page url attribute not found and is required",
255 [
'action' => $actionObject->getType(),
'url' =>
'{{PageObject}}',
'stepKey' => $actionObject->getStepKey()]
260 'url' =>
'{{PageObject}}' 262 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
270 $this->markTestIncomplete(
'TODO');
278 $this->markTestIncomplete(
'TODO');
287 $actionObject =
new ActionObject(
'merge123',
'fillField', [
288 'selector' =>
'#selector',
289 'userInput' =>
'{{EntityDataObject.key}}' 292 'key' =>
'replacementData' 294 $this->mockDataHandlerWithData($entityDataObject);
297 $actionObject->resolveReferences();
301 'selector' =>
'#selector',
302 'userInput' =>
'replacementData' 304 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
313 $actionObject =
new ActionObject(
'merge123',
'fillField', [
314 'selector' =>
'#selector',
315 'userInput' =>
'{{EntityDataObject.values}}' 324 $this->mockDataHandlerWithData($entityDataObject);
327 $actionObject->resolveReferences();
331 'selector' =>
'#selector',
332 'userInput' =>
'["value1","value2","\"My\" Value"]' 334 $this->assertEquals($expected, $actionObject->getCustomActionAttributes());
342 $this->expectException(TestReferenceException::class);
344 $actionObject =
new ActionObject(
'key123',
'fillField', [
345 'selector' =>
"{{SectionObject.elementObject('arg1')}}",
346 'userInput' =>
'Input' 348 $elementObject =
new ElementObject(
'elementObject',
'button',
'#{{var1}} {{var2}}',
null,
'42',
true);
349 $this->mockSectionHandlerWithElement($elementObject);
352 $actionObject->resolveReferences();
360 $this->expectException(TestReferenceException::class);
362 $actionObject =
new ActionObject(
'key123',
'fillField', [
363 'selector' =>
"{{SectionObject.elementObject('arg1', 'arg2', 'arg3')}}",
364 'userInput' =>
'Input' 366 $elementObject =
new ElementObject(
'elementObject',
'button',
'#{{var1}}',
null,
'42',
true);
367 $this->mockSectionHandlerWithElement($elementObject);
370 $actionObject->resolveReferences();
378 $this->expectException(TestReferenceException::class);
380 $actionObject =
new ActionObject(
'key123',
'generateDate', [
381 'timezone' =>
"INVALID_TIMEZONE" 385 $actionObject->resolveReferences();
388 private function mockSectionHandlerWithElement($elementObject)
390 $sectionObject =
new SectionObject(
'SectionObject', [
'elementObject' => $elementObject]);
391 $instance = AspectMock::double(SectionObjectHandler::class, [
'getObject' => $sectionObject])
393 AspectMock::double(SectionObjectHandler::class, [
'getInstance' => $instance]);
396 private function mockDataHandlerWithData($dataObject)
398 $dataInstance = AspectMock::double(DataObjectHandler::class, [
'getObject' => $dataObject])
400 AspectMock::double(DataObjectHandler::class, [
'getInstance' => $dataInstance]);
testResolveUrlWithNoAttribute()
testTooManyArgumentException()
testResolveSelectorWithOneStringLiteral()
testResolveUrlWithOneParam()
testTooFewArgumentException()
testResolveSelectorWithOneDataReference()
testInvalidTimezoneException()
testResolveSelectorWithOnePersistedReference()
testResolveUrlWithManyParams()
testConstructOrderAfter()
testResolveElementInSelector()
testConstructOrderBefore()
testResolveDataInUserInput()
testResolveSelectorWithManyParams()
static tearDownAfterClass()