|
11 | 11 | use Magento\FunctionalTestingFramework\Page\Objects\PageObject;
|
12 | 12 | use Magento\FunctionalTestingFramework\XmlParser\PageParser;
|
13 | 13 |
|
14 |
| -/** |
15 |
| - * Class PageObjectHandler |
16 |
| - */ |
17 | 14 | class PageObjectHandler implements ObjectHandlerInterface
|
18 | 15 | {
|
19 |
| - const TYPE = 'page'; |
20 |
| - const SUB_TYPE = 'section'; |
| 16 | + const PAGE = 'page'; |
| 17 | + const SECTION = 'section'; |
21 | 18 | const URL = 'url';
|
22 | 19 | const MODULE = 'module';
|
23 | 20 | const PARAMETERIZED = 'parameterized';
|
24 | 21 |
|
25 | 22 | /**
|
26 |
| - * Singleton class variable instance |
| 23 | + * The singleton instance of this class |
27 | 24 | *
|
28 | 25 | * @var PageObjectHandler
|
29 | 26 | */
|
30 |
| - private static $PAGE_DATA_PROCESSOR; |
| 27 | + private static $INSTANCE; |
31 | 28 |
|
32 | 29 | /**
|
33 | 30 | * Array containing all page objects
|
34 | 31 | *
|
35 |
| - * @var array |
| 32 | + * @var PageObject[] |
36 | 33 | */
|
37 |
| - private $pages = []; |
| 34 | + private $pageObjects = []; |
38 | 35 |
|
39 | 36 | /**
|
40 |
| - * Singleton method to return PageDataProcessor. |
41 |
| - * |
42 |
| - * @return PageObjectHandler |
| 37 | + * Private constructor |
43 | 38 | */
|
44 |
| - public static function getInstance() |
| 39 | + private function __construct() |
45 | 40 | {
|
46 |
| - if (!self::$PAGE_DATA_PROCESSOR) { |
47 |
| - self::$PAGE_DATA_PROCESSOR = new PageObjectHandler(); |
48 |
| - self::$PAGE_DATA_PROCESSOR->initPageObjects(); |
| 41 | + $objectManager = ObjectManagerFactory::getObjectManager(); |
| 42 | + $parser = $objectManager->get(PageParser::class); |
| 43 | + $parserOutput = $parser->getData(self::PAGE); |
| 44 | + |
| 45 | + if (!$parserOutput) { |
| 46 | + // No *Page.xml files found so give up |
| 47 | + return; |
49 | 48 | }
|
50 | 49 |
|
51 |
| - return self::$PAGE_DATA_PROCESSOR; |
| 50 | + foreach ($parserOutput as $pageName => $pageData) { |
| 51 | + $url = $pageData[self::URL]; |
| 52 | + $module = $pageData[self::MODULE]; |
| 53 | + $sectionNames = array_keys($pageData[self::SECTION]); |
| 54 | + $parameterized = $pageData[self::PARAMETERIZED] ?? false; |
| 55 | + $this->pageObjects[$pageName] = new PageObject($pageName, $url, $module, $sectionNames, $parameterized); |
| 56 | + } |
52 | 57 | }
|
53 | 58 |
|
54 | 59 | /**
|
55 |
| - * PageObjectHandler constructor. |
| 60 | + * Singleton method to return PageObjectHandler. |
| 61 | + * |
| 62 | + * @return PageObjectHandler |
56 | 63 | */
|
57 |
| - private function __construct() |
| 64 | + public static function getInstance() |
58 | 65 | {
|
59 |
| - //private constructor |
| 66 | + if (!self::$INSTANCE) { |
| 67 | + self::$INSTANCE = new PageObjectHandler(); |
| 68 | + } |
| 69 | + |
| 70 | + return self::$INSTANCE; |
60 | 71 | }
|
61 | 72 |
|
62 | 73 | /**
|
63 |
| - * Takes a page name and returns an array parsed from xml. |
| 74 | + * Return a page object by name |
64 | 75 | *
|
65 |
| - * @param string $pageName |
66 |
| - * @return PageObject | null |
| 76 | + * @param string $name |
| 77 | + * @return PageObject|null |
67 | 78 | */
|
68 |
| - public function getObject($pageName) |
| 79 | + public function getObject($name) |
69 | 80 | {
|
70 |
| - if (array_key_exists($pageName, $this->pages)) { |
71 |
| - return $this->getAllObjects()[$pageName]; |
| 81 | + if (array_key_exists($name, $this->pageObjects)) { |
| 82 | + return $this->getAllObjects()[$name]; |
72 | 83 | }
|
73 | 84 |
|
74 | 85 | return null;
|
75 | 86 | }
|
76 | 87 |
|
77 | 88 | /**
|
78 |
| - * Return an array containing all pages parsed from xml. |
| 89 | + * Return all page objects |
79 | 90 | *
|
80 |
| - * @return array |
| 91 | + * @return PageObject[] |
81 | 92 | */
|
82 | 93 | public function getAllObjects()
|
83 | 94 | {
|
84 |
| - return $this->pages; |
85 |
| - } |
86 |
| - |
87 |
| - /** |
88 |
| - * Executes parser code to read in page xml data. |
89 |
| - * |
90 |
| - * @return void |
91 |
| - * @SuppressWarnings(PHPMD.UnusedPrivateMethod) |
92 |
| - */ |
93 |
| - private function initPageObjects() |
94 |
| - { |
95 |
| - $objectManager = ObjectManagerFactory::getObjectManager(); |
96 |
| - /** @var $parser \Magento\FunctionalTestingFramework\XmlParser\PageParser */ |
97 |
| - $parser = $objectManager->get(PageParser::class); |
98 |
| - $parsedObjs = $parser->getData(self::TYPE); |
99 |
| - |
100 |
| - if (!$parsedObjs) { |
101 |
| - // No *Page.xml files found so give up |
102 |
| - return; |
103 |
| - } |
104 |
| - |
105 |
| - foreach ($parsedObjs as $pageName => $pageData) { |
106 |
| - $url = $pageData[self::URL]; |
107 |
| - $module = $pageData[self::MODULE]; |
108 |
| - $sections = array_keys($pageData[self::SUB_TYPE]); |
109 |
| - $parameterized = $pageData[self::PARAMETERIZED] ?? false; |
110 |
| - |
111 |
| - $this->pages[$pageName] = new PageObject($pageName, $url, $module, $sections, $parameterized); |
112 |
| - } |
| 95 | + return $this->pageObjects; |
113 | 96 | }
|
114 | 97 | }
|
0 commit comments