Ejemplo n.º 1
0
 public function testCheckConstraintsDisableNotAllowed()
 {
     $this->dependencyChecker->expects($this->once())->method('checkDependenciesWhenDisableModules')->will($this->returnValue(['Module_Foo' => ['Module_Baz' => ['Module_Baz', 'Module_Foo']], 'Module_Bar' => ['Module_Baz' => ['Module_Baz', 'Module_Bar']]]));
     $result = $this->object->checkConstraints(false, ['Module_Foo' => '', 'Module_Bar' => '']);
     $expect = ['Cannot disable Module_Foo because modules depend on it:', "Module_Baz: Module_Baz->Module_Foo", 'Cannot disable Module_Bar because modules depend on it:', "Module_Baz: Module_Baz->Module_Bar"];
     $this->assertEquals($expect, $result);
 }
 /**
  * Verifies component dependency for enable/disable actions
  *
  * @return JsonModel
  */
 public function enableDisableDependencyCheckAction()
 {
     $responseType = ResponseTypeInterface::RESPONSE_TYPE_SUCCESS;
     $data = Json::decode($this->getRequest()->getContent(), Json::TYPE_ARRAY);
     try {
         if (empty($data['packages'])) {
             throw new \Exception('No packages have been found.');
         }
         if (empty($data['type'])) {
             throw new \Exception('Can not determine the flow.');
         }
         $modules = $data['packages'];
         $isEnable = $data['type'] !== 'disable';
         $modulesToChange = [];
         foreach ($modules as $module) {
             if (!isset($module['name'])) {
                 throw new \Exception('Can not find module name.');
             }
             $modulesToChange[] = $module['name'];
         }
         $constraints = $this->moduleStatus->checkConstraints($isEnable, $modulesToChange);
         $data = [];
         if ($constraints) {
             $data['errorMessage'] = "Unable to change status of modules because of the following constraints: " . implode("<br>", $constraints);
             $responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
         }
     } catch (\Exception $e) {
         $responseType = ResponseTypeInterface::RESPONSE_TYPE_ERROR;
         $data['errorMessage'] = $e->getMessage();
     }
     $data['responseType'] = $responseType;
     return new JsonModel($data);
 }