/** * @param $name * @param array $moduleData * @return Module */ private function buildModule($name, array $moduleData) { $module = new Module(); $module->setName($name); $module->setPackage($moduleData['package']); $module->setVersion($moduleData['version']); $module->setIsEnable(true); return $module; }
/** * @param array $args * @return Module */ private function provideModule(array $args) { $alias = new Module(); $alias->setName($args['name']); $alias->setDescription($args['description']); $alias->setPackage($args['bootstrap']); $alias->setVersion($args['version']); $alias->setSource($args['source']); $alias->setIsEnable(true); return $alias; }
/** * @param InputInterface $input * @return Module */ private function buildModuleFromInput(InputInterface $input) { $module = new Module(); $module->setName($input->getArgument('name')); $module->setPackage($input->getArgument('package')); $module->setVersion($input->getArgument('version')); $module->setDescription($input->getArgument('description')); $module->setSource($input->getArgument('source')); $module->setIsEnable(true); return $module; }
public function testExecuteWithoutModule() { $input = $this->provideInput(['name' => 'module-name', 'action' => 'enable']); $output = new BufferedOutput(); $module = new Module(); $module->setName('module-name'); $module->setIsEnable(false); $task = new Enabling($this->provideServices($module, false)); $this->assertSame(ITask::BLOCKING_ERROR_CODE, $task->execute($input, $output)); $this->assertSame("Module \"module-name\" not found! Did you mean \"other\"?\n", $output->fetch()); $this->assertFalse($module->isEnable()); }
/** * @return Modules */ private function providesModules() { $modules = new Modules(); $moduleA = new Module(); $moduleA->setName('name of A'); $moduleA->setIsEnable(true); $moduleA->setTasks(['Samurai\\Module\\resources\\TaskA', 'Samurai\\Module\\resources\\TaskB']); $modules[] = $moduleA; $moduleB = new Module(); $moduleB->setName('name of B'); $moduleB->setIsEnable(true); $moduleB->setTasks(['Samurai\\Module\\resources\\TaskB']); $modules[] = $moduleB; $moduleC = new Module(); $moduleC->setName('name of C'); $moduleC->setTasks(['Samurai\\Module\\resources\\TaskC']); $modules[] = $moduleC; return $modules; }
public function testImportWithDependenciesButComposerError() { $data = new DummyFileReader(); $data->write('{ "package": "raphhh/samurai-module-git", "description": "Git module", "dependencies": [ { "package": "dependency/1", "version": "1" }, { "package": "dependency/2", "version": "2", "dependencies": [ { "package": "dependency/1", "version": "1" } ] } ], "tasks": [ "Samurai\\\\Git\\\\GitTask" ] }'); $dependency1Data = new DummyFileReader(); $dependency1Data->write('{ "package": "dependency/1", "description": "dependency 1", "dependencies": [ ], "tasks": [ ] }'); $dependency2Data = new DummyFileReader(); $dependency2Data->write('{ "package": "dependency/2", "description": "dependency 2", "dependencies": [ ], "tasks": [ ] }'); $module = new Module(); $module->setName('name'); $module->setPackage('none/none'); $module->setVersion('@dev'); $module->setIsEnable(true); $modules = new Modules(); $output = new BufferedOutput(); $moduleManager = $this->getMockBuilder('Samurai\\Module\\ModuleManager')->disableOriginalConstructor()->getMock(); $composer = $this->getMockBuilder('Samurai\\Project\\Composer\\Composer')->disableOriginalConstructor()->getMock(); $balloonFactory = $this->getMockBuilder('Balloon\\Factory\\BalloonFactory')->disableOriginalConstructor()->getMock(); $modulesSorter = $this->getMockBuilder('Samurai\\Module\\ModulesSorter')->disableOriginalConstructor()->getMock(); $balloonFactory->expects($this->at(0))->method('create')->with('COMPOSER_HOME/vendor/none/none/.samurai.json')->will($this->returnValue((new BalloonFactory(new DummyFileReaderFactory($data)))->create('.json'))); $composer->expects($this->at(0))->method('requirePackage')->with('none/none', '@dev', true)->will($this->returnValue(0)); $composer->expects($this->at(2))->method('requirePackage')->with('dependency/1', '1', true)->will($this->returnValue(1)); //error $composer->expects($this->exactly(1))->method('getHomePath')->will($this->returnValue('COMPOSER_HOME')); $moduleManager->expects($this->exactly(1))->method('add'); $moduleManager->expects($this->never())->method('set')->with($this->identicalTo($modules)); $moduleManager->expects($this->once())->method('clear'); $moduleManager->expects($this->any())->method('getAll')->will($this->returnValue($modules)); $modulesSorter->expects($this->never())->method('sort'); $moduleProcedure = new ModuleProcedure($moduleManager, $composer, $balloonFactory, $modulesSorter); $moduleProcedure->setOutput($output); $this->assertFalse($moduleProcedure->import($module)); $this->assertSame("Starting installation of none/none\nStarting installation of dependency/1\nAn error occurred during the installation of dependency/1\nRoll-backing installation of none/none\n", $output->fetch()); $this->assertSame(['name' => 'name', 'description' => 'Git module', 'package' => 'none/none', 'version' => '@dev', 'source' => null, 'isEnable' => true, 'tasks' => ['Samurai\\Git\\GitTask'], 'dependencies' => [['name' => '', 'description' => '', 'package' => 'dependency/1', 'version' => '1', 'source' => '', 'isEnable' => true, 'tasks' => [], 'dependencies' => []], ['name' => '', 'description' => '', 'package' => 'dependency/2', 'version' => '2', 'source' => '', 'isEnable' => true, 'tasks' => [], 'dependencies' => []]]], $module->toArray()); }
/** * @param array $data * @return Module */ private function buildModuleFromData(array $data) { $module = new Module(); $module->setName(!empty($data['name']) ? $data['name'] : null); $module->setPackage(!empty($data['package']) ? $data['package'] : null); $module->setVersion(!empty($data['version']) ? $data['version'] : null); $module->setDescription(!empty($data['description']) ? $data['description'] : null); $module->setSource(!empty($data['source']) ? $data['source'] : null); $module->setIsEnable(true); return $module; }