/**
* @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());
}
}