public function testCheckDependenciesWhenEnableModulesWithCurEnabledModules()
 {
     $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
     $actual = $this->checker->checkDependenciesWhenEnableModules(['B', 'D'], ['C']);
     $expected = ['B' => ['A' => ['B', 'D', 'A'], 'E' => ['B', 'E']], 'D' => ['A' => ['D', 'A'], 'E' => ['D', 'A', 'B', 'E']]];
     $this->assertEquals($expected, $actual);
 }
Ejemplo n.º 2
0
 /**
  * Whether it is allowed to enable or disable specified modules
  *
  * @param bool $isEnabled
  * @param string[] $modulesToBeChanged
  * @param string[] $currentlyEnabledModules
  * @param bool $prettyMessage
  *  
  * @return string[]
  */
 public function checkConstraints($isEnabled, $modulesToBeChanged, $currentlyEnabledModules = null, $prettyMessage = false)
 {
     $errorMessages = [];
     if ($isEnabled) {
         $errorModulesDependency = $this->dependencyChecker->checkDependenciesWhenEnableModules($modulesToBeChanged, $currentlyEnabledModules);
         $errorModulesConflict = $this->conflictChecker->checkConflictsWhenEnableModules($modulesToBeChanged, $currentlyEnabledModules);
     } else {
         $errorModulesDependency = $this->dependencyChecker->checkDependenciesWhenDisableModules($modulesToBeChanged, $currentlyEnabledModules);
         $errorModulesConflict = [];
     }
     foreach ($errorModulesDependency as $moduleName => $missingDependencies) {
         if (!empty($missingDependencies)) {
             if ($prettyMessage) {
                 $errorMessages[] = $this->createShortErrorMessage($isEnabled, $moduleName);
             } else {
                 $errorMessages = array_merge($errorMessages, $this->createVerboseErrorMessage($isEnabled, $moduleName, $missingDependencies));
             }
         }
     }
     foreach ($errorModulesConflict as $moduleName => $conflictingModules) {
         if (!empty($conflictingModules)) {
             $errorMessages[] = "Cannot enable {$moduleName} because it conflicts with other modules:";
             $errorMessages[] = implode("\n", $conflictingModules);
         }
     }
     return $errorMessages;
 }
 public function testCheckDependenciesWhenEnableModulesWithCurEnabledModules()
 {
     $this->packageInfoMock->expects($this->atLeastOnce())->method('getNonExistingDependencies')->willReturn([]);
     $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
     $actual = $this->checker->checkDependenciesWhenEnableModules(['B', 'D'], ['C']);
     $expected = ['B' => ['A' => ['B', 'D', 'A'], 'E' => ['B', 'E']], 'D' => ['A' => ['D', 'A'], 'E' => ['D', 'A', 'B', 'E']]];
     $this->assertEquals($expected, $actual);
 }