public function testCheckDependenciesWhenDisableModulesWithCurEnabledModules()
 {
     $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
     $actual = $this->checker->checkDependenciesWhenDisableModules(['B', 'D'], ['C', 'D', 'E']);
     $expected = ['B' => [], 'D' => []];
     $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 testCheckDependenciesWhenDisableModulesWithCurEnabledModules()
 {
     $this->packageInfoMock->expects($this->atLeastOnce())->method('getNonExistingDependencies')->willReturn([]);
     $this->checker = new DependencyChecker($this->listMock, $this->loaderMock, $this->packageInfoFactoryMock);
     $actual = $this->checker->checkDependenciesWhenDisableModules(['B', 'D'], ['C', 'D', 'E']);
     $expected = ['B' => [], 'D' => []];
     $this->assertEquals($expected, $actual);
 }
 /**
  * Check for dependencies to modules, return error messages
  *
  * @param string[] $modules
  * @return string[]
  */
 private function checkDependencies(array $modules)
 {
     $messages = [];
     $dependencies = $this->dependencyChecker->checkDependenciesWhenDisableModules($modules, $this->fullModuleList->getNames());
     foreach ($dependencies as $module => $dependingModules) {
         if (!empty($dependingModules)) {
             $messages[] = "<error>Cannot uninstall module '{$module}' because the following module(s) depend on it:</error>" . PHP_EOL . "\t<error>" . implode('</error>' . PHP_EOL . "\t<error>", array_keys($dependingModules)) . "</error>";
         }
     }
     return $messages;
 }
Ejemplo n.º 5
0
 /**
  * Returns list of modules that can be disabled
  *
  * @return array
  */
 private function getListOfDisableModules()
 {
     $canBeDisabled = [];
     $enabledModules = $this->getListOfEnabledModules();
     foreach ($this->allModules as $module) {
         $errorMessages = $this->dependencyChecker->checkDependenciesWhenDisableModules([$module['name']], $enabledModules);
         if (sizeof($errorMessages[$module['name']]) === 0) {
             $canBeDisabled[] = $module['name'];
         }
     }
     return $canBeDisabled;
 }