Example #1
0
 /**
  * Search in $scopeModule for test cases that uses page class in $pageModule
  * Only check classes in TestCase and Constraint
  *
  * @param $scopeModule
  * @param $pageModule
  * @return array
  */
 protected function getTestClassesByCrossModulePageReference($scopeModule, $pageModule)
 {
     $affectedTestCases = [];
     $testCases = $this->getTestClassesByType(self::CLASS_TYPE_TESTCASE, $scopeModule);
     $constraints = $this->getTestClassesByType(self::CLASS_TYPE_CONSTRAINT, $scopeModule);
     $pattern = str_replace('_', '\\', $pageModule) . '\\Test\\Page';
     /** @var $testCaseClass \ReflectionClass */
     foreach ($testCases as $testCaseClassName => $testCaseClass) {
         $testClassFileName = $testCaseClass->getFileName();
         if ($this->matchFileContentIgnoreCase($testClassFileName, $pattern)) {
             $affectedTestCases[$testCaseClassName] = $testCaseClassName;
         }
     }
     /** @var $constraintClass \ReflectionClass */
     foreach ($constraints as $constraintClassName => $constraintClass) {
         $constraintClassFileName = $constraintClass->getFileName();
         if ($this->matchFileContentIgnoreCase($constraintClassFileName, $pattern)) {
             $constraintName = lcfirst($constraintClass->getShortName());
             $testCases = $this->constraintChecker->getTestCasesByConstraintReference($constraintName);
             foreach ($testCases as $testCase) {
                 $moduleName = $this->mapClassNameToModule($testCase);
                 if ($moduleName == $scopeModule) {
                     $affectedTestCases[$testCase] = $testCase;
                 }
             }
         }
     }
     return $affectedTestCases;
 }