Skip to content

Commit

Permalink
Trying to fix inexistent parameter
Browse files Browse the repository at this point in the history
  • Loading branch information
franmomu committed Mar 17, 2020
1 parent 45a0373 commit 647b2db
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 12 deletions.
1 change: 1 addition & 0 deletions src/DependencyInjection/AbstractSonataAdminExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ protected function fixTemplatesConfiguration(
];

$useIntlTemplates = $container->getParameter('sonata.admin.configuration.use_intl_templates');

if ($useIntlTemplates) {
$defaultConfig['templates']['types']['list'] = array_merge($defaultConfig['templates']['types']['list'], [
'date' => '@SonataAdmin/CRUD/Intl/list_date.html.twig',
Expand Down
12 changes: 7 additions & 5 deletions src/DependencyInjection/SonataAdminExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,7 @@ public function load(array $configs, ContainerBuilder $container)
$container->removeDefinition('sonata.admin.lock.extension');
}

$useIntlTemplates = $config['use_intl_templates'] || isset($bundles['SonataIntlBundle']);

$container->setParameter('sonata.admin.configuration.use_intl_templates', $useIntlTemplates);
$useIntlTemplates = $container->getParameter('sonata.admin.configuration.use_intl_templates');

if ($useIntlTemplates) {
if ('@SonataAdmin/CRUD/history_revision_timestamp.html.twig' === $config['templates']['history_revision_timestamp']) {
Expand Down Expand Up @@ -211,12 +209,16 @@ public function prepend(ContainerBuilder $container)
{
$bundles = $container->getParameter('kernel.bundles');

$configs = $container->getExtensionConfig($this->getAlias());
$config = $this->processConfiguration(new Configuration(), $configs);

$useIntlTemplates = $config['use_intl_templates'] || isset($bundles['SonataIntlBundle']);
$container->setParameter('sonata.admin.configuration.use_intl_templates', $useIntlTemplates);

if (!isset($bundles['JMSDiExtraBundle'])) {
return;
}

$configs = $container->getExtensionConfig($this->getAlias());
$config = $this->processConfiguration(new Configuration(), $configs);
if (!$config['options']['enable_jms_di_extra_autoregistration']) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public function testTranslatorDisabled(): void
$container = $this->getContainer();
$container->removeAlias('translator');
$container->removeDefinition('translator');
$this->extension->prepend($container);
$this->extension->load([$this->config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand All @@ -88,6 +89,7 @@ public function testTranslatorDisabled(): void
public function testProcessParsingFullValidConfig(): void
{
$container = $this->getContainer();
$this->extension->prepend($container);
$this->extension->load([$this->config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down Expand Up @@ -152,6 +154,7 @@ public function testProcessParsingFullValidConfig(): void
public function testProcessResultingConfig(): void
{
$container = $this->getContainer();
$this->extension->prepend($container);
$this->extension->load([$this->config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down Expand Up @@ -246,6 +249,7 @@ public function testProcessSortAdmins(): void
$config['options']['sort_admins'] = true;
unset($config['dashboard']['groups']);

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand All @@ -272,6 +276,7 @@ public function testProcessGroupNameAsParameter(): void
$container = $this->getContainer();
$container->setParameter('sonata.admin.parameter.groupname', 'resolved_group_name');

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand All @@ -288,6 +293,7 @@ public function testApplyTemplatesConfiguration(): void
{
$container = $this->getContainer();

$this->extension->prepend($container);
$this->extension->load([$this->getConfig()], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down Expand Up @@ -347,6 +353,7 @@ public function testApplyShowMosaicButtonConfiguration(): void
{
$container = $this->getContainer();

$this->extension->prepend($container);
$this->extension->load([$this->getConfig()], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down Expand Up @@ -386,6 +393,7 @@ public function testProcessMultipleOnTopOptions(): void
'route_params' => ['articleId' => 3],
];

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down Expand Up @@ -423,6 +431,7 @@ public function testProcessMultipleOnTopOptionsAdditionalGroup(): void
'roles' => ['ROLE_ONE'],
];

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand All @@ -440,6 +449,7 @@ public function testProcessMultipleOnTopOptionsInServiceDefinition(): void
$config = $this->config;
$config['dashboard']['groups'] = [];

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand All @@ -462,6 +472,7 @@ public function testProcessMultipleOnTopOptionsInServiceDefinition1(): void
$config = $this->config;
$config['dashboard']['groups'] = [];

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand All @@ -487,6 +498,7 @@ public function testProcessMultipleOnTopOptionsInServiceDefinition2(): void
$config = $this->config;
$config['dashboard']['groups'] = [];

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down Expand Up @@ -515,6 +527,7 @@ public function testProcessAbstractAdminServiceInServiceDefinition(): void
$config = $this->config;
$config['dashboard']['groups'] = [];

$this->extension->prepend($container);
$this->extension->load([$config], $container);

$compilerPass = new AddDependencyCallsCompilerPass();
Expand Down
13 changes: 10 additions & 3 deletions tests/DependencyInjection/Compiler/ExtensionCompilerPassTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,8 @@ public function setUp(): void
*/
public function testAdminExtensionLoad(): void
{
$this->extension->load([], $container = $this->getContainer());
$this->extension->prepend($container = $this->getContainer());
$this->extension->load([], $container);

$this->assertTrue($container->hasParameter($this->root.'.extension.map'));
$this->assertIsArray($extensionMap = $container->getParameter($this->root.'.extension.map'));
Expand All @@ -84,7 +85,8 @@ public function testAdminExtensionLoad(): void
*/
public function testFlattenEmptyExtensionConfiguration(): void
{
$this->extension->load([], $container = $this->getContainer());
$this->extension->prepend($container = $this->getContainer());
$this->extension->load([], $container);
$extensionMap = $container->getParameter($this->root.'.extension.map');

$method = new \ReflectionMethod(
Expand Down Expand Up @@ -116,7 +118,8 @@ public function testFlattenEmptyExtensionConfiguration(): void
public function testFlattenExtensionConfiguration(): void
{
$config = $this->getConfig();
$this->extension->load([$config], $container = $this->getContainer());
$this->extension->prepend($container = $this->getContainer());
$this->extension->load([$config], $container);
$extensionMap = $container->getParameter($this->root.'.extension.map');

$method = new \ReflectionMethod(
Expand Down Expand Up @@ -197,6 +200,7 @@ public function testProcessWithInvalidExtensionId(): void
];

$container = $this->getContainer();
$this->extension->prepend($container);
$this->extension->load([$config], $container);

$extensionsPass = new ExtensionCompilerPass();
Expand All @@ -220,6 +224,7 @@ public function testProcessWithInvalidAdminId(): void
];

$container = $this->getContainer();
$this->extension->prepend($container);
$this->extension->load([$config], $container);

$extensionsPass = new ExtensionCompilerPass();
Expand All @@ -235,6 +240,7 @@ public function testProcessWithInvalidAdminId(): void
public function testProcess(): void
{
$container = $this->getContainer();
$this->extension->prepend($container);
$this->extension->load([$this->config], $container);

$extensionsPass = new ExtensionCompilerPass();
Expand Down Expand Up @@ -297,6 +303,7 @@ public function testProcessThrowsExceptionIfTraitsAreNotAvailable(): void
];

$container = $this->getContainer();
$this->extension->prepend($container);
$this->extension->load([$config], $container);

$extensionsPass = new ExtensionCompilerPass();
Expand Down
30 changes: 26 additions & 4 deletions tests/DependencyInjection/SonataAdminExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,15 @@
use Sonata\AdminBundle\Search\SearchHandler;
use Sonata\AdminBundle\Templating\MutableTemplateRegistryInterface;
use Sonata\AdminBundle\Templating\TemplateRegistry;
use Sonata\AdminBundle\Tests\Fixtures\DependencyInjection\DummySonataAdminExtension;
use Sonata\AdminBundle\Translator\BCLabelTranslatorStrategy;
use Sonata\AdminBundle\Translator\FormLabelTranslatorStrategy;
use Sonata\AdminBundle\Translator\LabelTranslatorStrategyInterface;
use Sonata\AdminBundle\Translator\NativeLabelTranslatorStrategy;
use Sonata\AdminBundle\Translator\NoopLabelTranslatorStrategy;
use Sonata\AdminBundle\Translator\UnderscoreLabelTranslatorStrategy;
use Sonata\AdminBundle\Twig\GlobalVariables;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class SonataAdminExtensionTest extends AbstractExtensionTestCase
{
Expand Down Expand Up @@ -309,13 +311,33 @@ public function testDefaultTemplates(): void

public function testLoadIntlTemplate(): void
{
$this->load([
'use_intl_templates' => true,
]);
$templates = $this->container->getParameter('sonata.admin.configuration.templates');
$container = new ContainerBuilder();
$container->setParameter('kernel.bundles', []);
$container->prependExtensionConfig('sonata_admin', ['use_intl_templates' => true]);
$extension = new SonataAdminExtension();
$extension->prepend($container);
$configs = $container->getExtensionConfig('sonata_admin');
$extension->load($configs, $container);

$templates = $container->getParameter('sonata.admin.configuration.templates');
$this->assertSame('@SonataAdmin/CRUD/Intl/history_revision_timestamp.html.twig', $templates['history_revision_timestamp']);
}

public function testLoadIntlTemplatesInOtherSonataAdminExtensions(): void
{
$container = new ContainerBuilder();
$container->setParameter('kernel.bundles', []);
$container->prependExtensionConfig('sonata_admin', ['use_intl_templates' => true]);
$extension = new SonataAdminExtension();
$dummyExtension = new DummySonataAdminExtension();
$container->registerExtension($dummyExtension);
$extension->prepend($container);
$container->registerExtension($extension);
$dummyExtension->load([], $container);

$this->assertSame('@SonataAdmin/CRUD/Intl/list_date.html.twig', $dummyExtension->configs[0]['templates']['types']['list']['date']);
}

protected function getContainerExtensions(): array
{
return [new SonataAdminExtension()];
Expand Down
33 changes: 33 additions & 0 deletions tests/Fixtures/DependencyInjection/DummySonataAdminExtension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

declare(strict_types=1);

/*
* This file is part of the Sonata Project package.
*
* (c) Thomas Rabaix <[email protected]>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Sonata\AdminBundle\Tests\Fixtures\DependencyInjection;

use Sonata\AdminBundle\DependencyInjection\AbstractSonataAdminExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder;

class DummySonataAdminExtension extends AbstractSonataAdminExtension
{
/**
* @var array
*/
public $configs;

/**
* @inheritDoc
*/
public function load(array $configs, ContainerBuilder $container)
{
$this->configs = $this->fixTemplatesConfiguration($configs, $container);
}
}

0 comments on commit 647b2db

Please sign in to comment.