Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PageObjectHandlerTest.php
Go to the documentation of this file.
1 <?php
8 
9 use AspectMock\Test as AspectMock;
15 
17 {
18  public function testGetPageObject()
19  {
20  $mockData = [
21  "testPage1" => [
22  "url" => "testURL1",
23  "module" => "testModule1",
24  "section" => [
25  "someSection1" => [],
26  "someSection2" => []
27  ],
28  "area" => "test"
29  ],
30  "testPage2" => [
31  "url" => "testURL2",
32  "module" => "testModule2",
33  "parameterized" => true,
34  "section" => [
35  "someSection1" => []
36  ],
37  "area" => "test"
38  ]];
39  $this->setMockParserOutput($mockData);
40 
41  // get pages
42  $pageHandler = PageObjectHandler::getInstance();
43  $pages = $pageHandler->getAllObjects();
44  $page = $pageHandler->getObject('testPage1');
45  $invalidPage = $pageHandler->getObject('someInvalidPage');
46 
47  // perform asserts
48  $this->assertCount(2, $pages);
49  $this->assertArrayHasKey("testPage1", $pages);
50  $this->assertArrayHasKey("testPage2", $pages);
51  $this->assertNull($invalidPage);
52  }
53 
54  public function testGetEmptyPage()
55  {
56  $mockData = [
57  "testPage1" => [
58  "url" => "testURL1",
59  "module" => "testModule1",
60  "section" => [
61  ],
62  "area" => "test"
63  ]];
64  $this->setMockParserOutput($mockData);
65 
66  // get pages
67  $page = PageObjectHandler::getInstance()->getObject('testPage1');
68 
69  // Empty page has been read in and gotten without an exception being thrown.
70  $this->addToAssertionCount(1);
71  }
72 
78  private function setMockParserOutput($data)
79  {
80  // clear section object handler value to inject parsed content
81  $property = new \ReflectionProperty(PageObjectHandler::class, 'INSTANCE');
82  $property->setAccessible(true);
83  $property->setValue(null);
84 
85  $mockSectionParser = AspectMock::double(PageParser::class, ["getData" => $data])->make();
86  $instance = AspectMock::double(ObjectManager::class, ['get' => $mockSectionParser])->make();
87  AspectMock::double(ObjectManagerFactory::class, ['getObjectManager' => $instance]);
88  }
89 }
$page
Definition: pages.php:8