|
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