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); }