/** * Create the default container containing all basic services. * * @param array $services Array of services to provide. * * @return Container */ protected function createDefaultContainer($services = []) { $container = new Container(); foreach ($services as $name => $service) { $container->set($name, $service); } if (!$container->has('event_dispatcher')) { $container->set('event_dispatcher', new EventDispatcher()); } if (!$container->has('tenside.home')) { $home = $this->getMock(HomePathDeterminator::class, ['homeDir']); $home->method('homeDir')->willReturn($this->getTempDir()); $container->set('tenside.home', $home); } if (!$container->has('tenside.config')) { $container->set('tenside.config', TensideJsonConfigFactory::create($container->get('tenside.home'))); } if (!$container->has('tenside.taskfactory')) { $container->set('tenside.taskfactory', new ComposerTaskFactory($container->get('tenside.home'))); } if (!$container->has('tenside.tasks')) { $container->set('tenside.tasks', TaskListFactory::create($container->get('tenside.home'), $container->get('tenside.taskfactory'))); } if (!$container->has('tenside.composer_json')) { $container->set('tenside.composer_json', ComposerJsonFactory::create($container->get('tenside.home'))); } if (!$container->has('tenside.status')) { $tenside = new InstallationStatusDeterminator($container->get('tenside.home')); $container->set('tenside.status', $tenside); } return $container; }
/** * Test that the factory creates a new instance. * * @return void */ public function testCreate() { $home = $this->getMock(HomePathDeterminator::class, ['tensideDataDir']); $home->method('tensideDataDir')->willReturn($this->getTempDir()); /** @var HomePathDeterminator $home */ $tenside = TensideJsonConfigFactory::create($home); $this->assertInstanceOf(TensideJsonConfig::class, $tenside); $jsonFile = new \ReflectionProperty($tenside, 'data'); $jsonFile->setAccessible(true); $diskFile = $jsonFile->getValue($tenside); $this->assertEquals($this->getTempDir() . DIRECTORY_SEPARATOR . 'tenside.json', $diskFile->getFilename()); }