Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SuiteObjectHandler.php
Go to the documentation of this file.
1 <?php
7 
14 use Magento\FunctionalTestingFramework\Test\Util\ObjectExtractor;
15 
20 {
26  private static $SUITE_OBJECT_HANLDER_INSTANCE;
27 
33  private $suiteObjects;
34 
38  private function __construct()
39  {
40  // empty constructor
41  }
42 
49  public static function getInstance()
50  {
51  if (self::$SUITE_OBJECT_HANLDER_INSTANCE == null) {
52  self::$SUITE_OBJECT_HANLDER_INSTANCE = new SuiteObjectHandler();
53  self::$SUITE_OBJECT_HANLDER_INSTANCE->initSuiteData();
54  }
55 
56  return self::$SUITE_OBJECT_HANLDER_INSTANCE;
57  }
58 
65  public function getObject($objectName)
66  {
67  if (!array_key_exists($objectName, $this->suiteObjects)) {
68  trigger_error("Suite ${objectName} is not defined.", E_USER_ERROR);
69  }
70  return $this->suiteObjects[$objectName];
71  }
72 
78  public function getAllObjects()
79  {
80  return $this->suiteObjects;
81  }
82 
88  public function getAllTestReferences()
89  {
90  $testsReferencedInSuites = [];
91  $suites = $this->getAllObjects();
92 
93  foreach ($suites as $suite) {
95  $test_keys = array_keys($suite->getTests());
96  $testToSuiteName = array_fill_keys($test_keys, [$suite->getName()]);
97  $testsReferencedInSuites = array_merge_recursive($testsReferencedInSuites, $testToSuiteName);
98  }
99 
100  return $testsReferencedInSuites;
101  }
102 
110  private function initSuiteData()
111  {
112  $suiteDataParser = ObjectManagerFactory::getObjectManager()->create(SuiteDataParser::class);
113  $suiteObjectExtractor = new SuiteObjectExtractor();
114  $this->suiteObjects = $suiteObjectExtractor->parseSuiteDataIntoObjects($suiteDataParser->readSuiteData());
115  }
116 }