Skip to content

Commit

Permalink
More Twig Extension Tests (#450)
Browse files Browse the repository at this point in the history
  • Loading branch information
Hanmac committed Jul 14, 2023
1 parent 99bc96c commit f0d8083
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 2 deletions.
1 change: 1 addition & 0 deletions composer.json
Expand Up @@ -51,6 +51,7 @@
"symfony/http-kernel": "^5.4 || ^6.2",
"symfony/phpunit-bridge": "^6.2",
"symfony/twig-bridge": "^5.4 || ^6.2",
"symfony/twig-bundle": "^5.4 || ^6.2",
"vimeo/psalm": "^5.8"
},
"minimum-stability": "dev",
Expand Down
Expand Up @@ -15,16 +15,18 @@

use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
use Sonata\Form\Bridge\Symfony\DependencyInjection\SonataFormExtension;
use Symfony\Bundle\TwigBundle\DependencyInjection\TwigExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Extension\Extension;
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;

final class SonataFormExtensionTest extends AbstractExtensionTestCase
{
public function testAfterLoadingTheWrappingParameterIsSet(): void
{
$this->container->setParameter('kernel.bundles', []);
$this->load();
$this->assertContainerBuilderHasParameter(
static::assertContainerBuilderHasParameter(
'sonata.form.form_type'
);
static::assertSame(
Expand All @@ -41,7 +43,7 @@ public function testHorizontalFormTypeMeansNoWrapping(): void
$this->load([
'form_type' => 'horizontal',
]);
$this->assertContainerBuilderHasParameter(
static::assertContainerBuilderHasParameter(
'sonata.form.form_type'
);
static::assertSame(
Expand Down Expand Up @@ -84,6 +86,76 @@ public function getAlias(): string
], $containerBuilder->getExtensionConfig('sonata_form'));
}

public function testTwigConfigParameterIsSetting(): void
{
$fakeContainer = $this->getMockBuilder(ContainerBuilder::class)
->onlyMethods(['hasExtension', 'prependExtensionConfig'])
->getMock();

$fakeContainer->expects(static::once())
->method('hasExtension')
->with(static::equalTo('twig'))
->willReturn(true);

$fakeContainer->expects(static::once())
->method('prependExtensionConfig')
->with('twig', ['form_themes' => ['@SonataForm/Form/datepicker.html.twig']]);

foreach ($this->getContainerExtensions() as $extension) {
if ($extension instanceof PrependExtensionInterface) {
$extension->prepend($fakeContainer);
}
}
}

public function testTwigConfigParameterIsSet(): void
{
$fakeTwigExtension = $this->getMockBuilder(Extension::class)->onlyMethods(['load', 'getAlias'])->getMock();

$fakeTwigExtension->expects(static::any())
->method('getAlias')
->willReturn('twig');

$this->container->registerExtension($fakeTwigExtension);

$this->load();

$twigConfigurations = $this->container->getExtensionConfig('twig');

static::assertArrayHasKey(0, $twigConfigurations);
static::assertArrayHasKey('form_themes', $twigConfigurations[0]);
static::assertSame(['@SonataForm/Form/datepicker.html.twig'], $twigConfigurations[0]['form_themes']);
}

public function testTwigBundleLoadParameter(): void
{
$this->setParameter('kernel.bundles', [
SonataFormExtension::class => true,
]);
$this->setParameter('kernel.bundles_metadata', []);
$this->setParameter('kernel.project_dir', __DIR__);
$this->setParameter('kernel.root_dir', __DIR__);
$this->setParameter('kernel.debug', false);

$this->container->registerExtension(new TwigExtension());
$this->compile();

/**
* @var string[] $resources
*/
$resources = $this->container->getParameter('twig.form.resources');
static::assertContains('@SonataForm/Form/datepicker.html.twig', $resources);
}

public function testTwigConfigParameterIsNotSet(): void
{
$this->load();

$twigConfigurations = $this->container->getExtensionConfig('twig');

static::assertArrayNotHasKey(0, $twigConfigurations);
}

protected function getContainerExtensions(): array
{
return [
Expand Down

0 comments on commit f0d8083

Please sign in to comment.