public function testGetTemplate()
{
$app = new Application();
$app['crud.template.list.book'] = 'testTemplateListBook.twig';
$app['crud.template.list'] = 'testTemplateList.twig';
$app['crud.layout.list.book'] = 'testLayoutListBook.twig';
$app['crud.layout.list'] = 'testLayoutList.twig';
$crudServiceProvider = new ServiceProvider();
$read = $crudServiceProvider->getTemplate($app, 'template', 'list', 'book');
$this->assertSame($read, $app['crud.template.list.book']);
$read = $crudServiceProvider->getTemplate($app, 'template', 'list', 'library');
$this->assertSame($read, $app['crud.template.list']);
$read = $crudServiceProvider->getTemplate($app, 'layout', 'list', 'book');
$this->assertSame($read, $app['crud.layout.list.book']);
$read = $crudServiceProvider->getTemplate($app, 'layout', 'list', 'library');
$this->assertSame($read, $app['crud.layout.list']);
$expected = '@crud/list.twig';
$read = $crudServiceProvider->getTemplate($app, 'foo', 'list', 'bar');
$this->assertSame($read, $expected);
$read = $crudServiceProvider->getTemplate($app, null, 'list', 'bar');
$this->assertSame($read, $expected);
$expected = 'testLayoutList.twig';
$read = $crudServiceProvider->getTemplate($app, 'layout', 'list', null);
$this->assertSame($read, $expected);
$expected = '@crud/.twig';
$read = $crudServiceProvider->getTemplate($app, 'layout', null, 'book');
$this->assertSame($read, $expected);
}