/** * Prepares test environment. */ public function setUp() { $finder = new Finder(); $finder->files()->in(__DIR__ . '/config/'); $finder->name('*.yml'); $this->dummyParser = $this->getMock('Symfony\\Component\\Yaml\\Parser'); $this->dummyDumper = $this->getMock('Symfony\\Component\\Yaml\\Dumper'); $this->dummyFilesystem = $this->getMock('Symfony\\Component\\Filesystem\\Filesystem'); $dummyDispatcher = $this->getMock('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'); $dummyDispatcher->expects($this->once())->method('dispatch')->willReturnCallback(function ($name, $event) { /** @var GroupOptionTypeEvent $event */ $optionTypes = ['acp' => ['twomartens.core' => ['access' => new BooleanOptionType()]]]; $event->addOptions($optionTypes); }); $this->yamlData = []; $this->optionData = []; foreach ($finder as $file) { /** @var SplFileInfo $file */ $basename = $file->getBasename('.yml'); $this->yamlData[$basename] = Yaml::parse($file->getContents()); $this->optionData[$basename] = ConfigUtil::convertToOptions($this->yamlData[$basename]); } $this->dummyParser->expects($this->any())->method('parse')->willReturnCallback(function ($content) { return Yaml::parse($content); }); /** @var \Symfony\Component\EventDispatcher\EventDispatcherInterface $dummyDispatcher */ $this->groupService = new GroupService($finder, $this->dummyParser, $this->dummyDumper, $this->dummyFilesystem, $dummyDispatcher); }
/** * Sets the test environment up. */ public function setUp() { $finder = new Finder(); $finder->files()->in(__DIR__ . '/config/'); $finder->name('config.yml'); $this->dummyParser = $this->getMock('Symfony\\Component\\Yaml\\Parser'); $this->dummyDumper = $this->getMock('Symfony\\Component\\Yaml\\Dumper'); $this->dummyFilesystem = $this->getMock('Symfony\\Component\\Filesystem\\Filesystem'); foreach ($finder as $file) { /** @var SplFileInfo $file */ $this->yamlData = Yaml::parse($file->getContents()); $this->optionData = ConfigUtil::convertToOptions($this->yamlData); $this->dummyParser->expects($this->once())->method('parse')->willReturn($this->yamlData); $this->dummyDumper->expects($this->any())->method('dump')->willReturn($file->getContents()); $this->dummyFilesystem->expects($this->any())->method('dumpFile')->with($file->getRealPath(), $file->getContents()); } $this->optionService = new OptionService($finder, $this->dummyParser, $this->dummyDumper, $this->dummyFilesystem); }
/** * Tests the convertToOptions method. */ public function testConvertToOptions() { $path = __DIR__ . '/config/config.yml'; $contents = file_get_contents($path); $yamlProcessed = Yaml::parse($contents); $output = ConfigUtil::convertToOptions($yamlProcessed); $expectedOutput = new OptionCategory(); // imports category $importsCategory = new OptionCategory('imports'); $subOptions = [new Option(0, 'resource', 'string', 'parameters.yml'), new Option(0, 'resource', 'string', 'security.yml'), new Option(0, 'resource', 'string', '@TwoMartensCoreBundle/Resources/config/services.yml')]; $importsCategory->setOptions($subOptions); // test category $testCategory = new OptionCategory('test'); $subOptions = [new Option(0, 'jacob', 'null', null), new Option(0, 'hans', 'array', ['achim', 'jacob', 'manfred'])]; $testCategory->setOptions($subOptions); $manfredCategory = new OptionCategory('michael'); $subOptions = [new Option(0, 'security', 'boolean', true)]; $manfredCategory->setOptions($subOptions); $testCategory->setCategories([$manfredCategory]); // fail category $failCategory = new OptionCategory('fail'); $expectedOutput->setCategories([$importsCategory, $testCategory, $failCategory]); $this->assertEquals($expectedOutput, $output); }
/** * Parses the config files. */ private function parseConfig() { foreach ($this->finder as $configFile) { /** @var SplFileInfo $configFile */ $configYAML = $this->parser->parse($configFile->getContents()); $configOptions = ConfigUtil::convertToOptions($configYAML); $this->setOptionsFor(strtoupper($configFile->getBasename('.yml')), $configOptions); } }
/** * {@inheritdoc} */ public function getOptions() { return ConfigUtil::convertToOptions($this->optionsYAML); }