/** * @dataProvider templateRendererProvider */ public function testTemplateRenderer($containerOption, $routerOption, $templateRendererOption, $copyFilesKey, $expectedResponseStatusCode, $expectedTemplateRenderer) { $io = $this->prophesize('Composer\\IO\\IOInterface'); $config = $this->getConfig(); // Install container $containerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['container'], $containerOption, $copyFilesKey); $this->assertTrue($containerResult); // Install router $routerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['router'], $routerOption, $copyFilesKey); $this->assertTrue($routerResult); // Install template engine $templateEngineResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['template-engine'], $templateRendererOption, $copyFilesKey); $this->assertTrue($templateEngineResult); // Test container $container = $this->getContainer(); $this->assertTrue($container->has(Expressive\Application::class)); $this->assertTrue($container->has('Zend\\Expressive\\FinalHandler')); // Test config $config = $container->get('config'); $this->assertEquals(Expressive\Container\TemplatedErrorHandlerFactory::class, $config['dependencies']['factories']['Zend\\Expressive\\FinalHandler']); // Test template renderer $templateRenderer = $container->get(Expressive\Template\TemplateRendererInterface::class); $this->assertInstanceOf(Expressive\Template\TemplateRendererInterface::class, $templateRenderer); $this->assertInstanceOf($expectedTemplateRenderer, $templateRenderer); if ($copyFilesKey == 'copy-files') { // Test home page for full install only, otherwise you get invalid template name errors $response = $this->getAppResponse(); $this->assertEquals($expectedResponseStatusCode, $response->getStatusCode()); } }
/** * @dataProvider errorHandlerProvider */ public function testErrorHandler($containerOption, $errorHandlerOption, $copyFilesKey, $expectedErrorHandler) { $io = $this->prophesize('Composer\\IO\\IOInterface'); $config = $this->getConfig(); // Install container $containerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['container'], $containerOption, $copyFilesKey); $this->assertTrue($containerResult); // Install error handler $containerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['error-handler'], $errorHandlerOption, $copyFilesKey); $this->assertTrue($containerResult); // Test container $container = $this->getContainer(); $this->assertTrue($container->has('Zend\\Expressive\\FinalHandler')); $config = $container->get('config'); $this->assertEquals($expectedErrorHandler, $config['dependencies']['factories']['Zend\\Expressive\\FinalHandler']); }
public function testAnsweredWithPackage() { // Prepare the installer OptionalPackages::removeDevDependencies(); $io = $this->prophesize('Composer\\IO\\IOInterface'); $io->write(Argument::containingString('Adding package <info>league/container</info>'))->shouldBeCalled(); $io->write(Argument::containingString('<warning>You need to edit public/index.php'))->shouldBeCalled(); $config = $this->getConfig(); $question = $config['questions']['container']; $answer = 'league/container:2.2.0'; $copyFilesKey = 'minimal-files'; $result = OptionalPackages::processAnswer($io->reveal(), $question, $answer, $copyFilesKey); $this->assertTrue($result); $this->assertFileNotExists($this->getProjectRoot() . '/config/container.php'); $this->assertComposerHasPackages(['league/container']); }
/** * @dataProvider routerProvider */ public function testRouter($containerOption, $routerOption, $copyFilesKey, $expectedResponseStatusCode, $expectedRoutes, $expectedRouter) { $io = $this->prophesize('Composer\\IO\\IOInterface'); $config = $this->getConfig(); // Install container $containerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['container'], $containerOption, $copyFilesKey); $this->assertTrue($containerResult); // Install router $routerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['router'], $routerOption, $copyFilesKey); $this->assertTrue($routerResult); // Test container $container = $this->getContainer(); $this->assertTrue($container->has(Router\RouterInterface::class)); // Test config $config = $container->get('config'); $this->assertEquals($expectedRouter, $config['dependencies']['invokables'][Router\RouterInterface::class]); $this->assertEquals($expectedRoutes, $config['routes']); // Test home page $response = $this->getAppResponse(); $this->assertEquals($expectedResponseStatusCode, $response->getStatusCode()); }
/** * @dataProvider containerProvider */ public function testContainer($containerOption, $routerOption, $copyFilesKey, $expectedResponseStatusCode, $expectedContainer) { $io = $this->prophesize('Composer\\IO\\IOInterface'); $config = $this->getConfig(); // Install container $containerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['container'], $containerOption, $copyFilesKey); $this->assertTrue($containerResult); // Install router $routerResult = OptionalPackages::processAnswer($io->reveal(), $config['questions']['router'], $routerOption, $copyFilesKey); $this->assertTrue($routerResult); // Test container $container = $this->getContainer(); $this->assertInstanceOf(ContainerInterface::class, $container); $this->assertInstanceOf($expectedContainer, $container); $this->assertTrue($container->has(Expressive\Helper\UrlHelper::class)); $this->assertTrue($container->has(Expressive\Helper\ServerUrlHelper::class)); $this->assertTrue($container->has(Expressive\Application::class)); $this->assertTrue($container->has(Expressive\Router\RouterInterface::class)); // Test home page $response = $this->getAppResponse(); $this->assertEquals($expectedResponseStatusCode, $response->getStatusCode()); }