public function testWrite() { $data = [['key1' => 'value1'], ['key2' => 'value2']]; $fileReader = new DummyFileReader(); $yaml = new Yaml($fileReader, new Parser(), new Dumper(), 2); $yaml->write($data); $this->assertSame("-\n key1: value1\n-\n key2: value2\n", $fileReader->read()); }
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()); }