Skip to content

Commit d224769

Browse files
authored
MQE-547: [Unit Test] PageObjectHandler.php
- Created Unit Test for PageObjectHandler.
1 parent 9f823d3 commit d224769

File tree

1 file changed

+53
-2
lines changed

1 file changed

+53
-2
lines changed

dev/tests/unit/Magento/FunctionalTestFramework/Page/Handlers/PageObjectHandlerTest.php

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,63 @@
66

77
namespace tests\unit\Magento\FunctionalTestFramework\Page\Handlers;
88

9+
use AspectMock\Test as AspectMock;
10+
use Magento\FunctionalTestingFramework\ObjectManager;
11+
use Magento\FunctionalTestingFramework\ObjectManagerFactory;
12+
use Magento\FunctionalTestingFramework\Page\Handlers\PageObjectHandler;
13+
use Magento\FunctionalTestingFramework\XmlParser\PageParser;
914
use PHPUnit\Framework\TestCase;
1015

1116
class PageObjectHandlerTest extends TestCase
1217
{
13-
public function testTodo()
18+
public function testGetPageObject()
1419
{
15-
$this->markTestIncomplete('TODO');
20+
$mockData = [
21+
"testPage1" => [
22+
"url" => "testURL1",
23+
"module" => "testModule1",
24+
"section" => [
25+
"someSection1" => [],
26+
"someSection2" => []
27+
]
28+
],
29+
"testPage2" => [
30+
"url" => "testURL2",
31+
"module" => "testModule2",
32+
"parameterized" => true,
33+
"section" => [
34+
"someSection1" => []
35+
]
36+
]];
37+
$this->setMockParserOutput($mockData);
38+
39+
// get pages
40+
$pageHandler = PageObjectHandler::getInstance();
41+
$pages = $pageHandler->getAllObjects();
42+
$page = $pageHandler->getObject('testPage1');
43+
$invalidPage = $pageHandler->getObject('someInvalidPage');
44+
45+
// perform asserts
46+
$this->assertCount(2, $pages);
47+
$this->assertArrayHasKey("testPage1", $pages);
48+
$this->assertArrayHasKey("testPage2", $pages);
49+
$this->assertNull($invalidPage);
50+
}
51+
52+
/**
53+
* Function used to set mock for parser return and force init method to run between tests.
54+
*
55+
* @param array $data
56+
*/
57+
private function setMockParserOutput($data)
58+
{
59+
// clear section object handler value to inject parsed content
60+
$property = new \ReflectionProperty(PageObjectHandler::class, 'PAGE_DATA_PROCESSOR');
61+
$property->setAccessible(true);
62+
$property->setValue(null);
63+
64+
$mockSectionParser = AspectMock::double(PageParser::class, ["getData" => $data])->make();
65+
$instance = AspectMock::double(ObjectManager::class, ['get' => $mockSectionParser])->make();
66+
AspectMock::double(ObjectManagerFactory::class, ['getObjectManager' => $instance]);
1667
}
1768
}

0 commit comments

Comments
 (0)