Skip to content

Commit

Permalink
Test the service arguments more accurately (see #1115)
Browse files Browse the repository at this point in the history
Description
-----------

This also allows us to distinct between `'@logger'` and `'@?logger'`.

Commits
-------

2ed70b5 Test the service arguments more accurately
  • Loading branch information
leofeyer committed Dec 18, 2019
1 parent 57f429e commit c4bcb6d
Show file tree
Hide file tree
Showing 7 changed files with 1,294 additions and 410 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@
use Contao\CoreBundle\Framework\FrameworkAwareInterface;
use PHPUnit\Framework\TestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
use Symfony\Component\DependencyInjection\Reference;

class ContaoCalendarExtensionTest extends TestCase
{
Expand Down Expand Up @@ -51,12 +53,24 @@ public function testRegistersTheGeneratePageListener(): void

$this->assertSame(GeneratePageListener::class, $definition->getClass());
$this->assertTrue($definition->isPublic());
$this->assertSame('contao.framework', (string) $definition->getArgument(0));

$tags = $definition->getTags();

$this->assertArrayHasKey('contao.hook', $tags);
$this->assertSame('generatePage', $tags['contao.hook'][0]['hook']);
$this->assertEquals(
[
new Reference('contao.framework'),
],
$definition->getArguments()
);

$this->assertSame(
[
'contao.hook' => [
[
'hook' => 'generatePage',
],
],
],
$definition->getTags()
);
}

public function testRegistersTheInsertTagsListener(): void
Expand All @@ -67,12 +81,24 @@ public function testRegistersTheInsertTagsListener(): void

$this->assertSame(InsertTagsListener::class, $definition->getClass());
$this->assertTrue($definition->isPublic());
$this->assertSame('contao.framework', (string) $definition->getArgument(0));

$tags = $definition->getTags();

$this->assertArrayHasKey('contao.hook', $tags);
$this->assertSame('replaceInsertTags', $tags['contao.hook'][0]['hook']);
$this->assertEquals(
[
new Reference('contao.framework'),
],
$definition->getArguments()
);

$this->assertSame(
[
'contao.hook' => [
[
'hook' => 'replaceInsertTags',
],
],
],
$definition->getTags()
);
}

public function testRegistersThePreviewUrlCreateListener(): void
Expand All @@ -83,14 +109,26 @@ public function testRegistersThePreviewUrlCreateListener(): void

$this->assertSame(PreviewUrlCreateListener::class, $definition->getClass());
$this->assertTrue($definition->isPrivate());
$this->assertSame('request_stack', (string) $definition->getArgument(0));
$this->assertSame('contao.framework', (string) $definition->getArgument(1));

$tags = $definition->getTags();

$this->assertArrayHasKey('kernel.event_listener', $tags);
$this->assertSame('contao.preview_url_create', $tags['kernel.event_listener'][0]['event']);
$this->assertSame('onPreviewUrlCreate', $tags['kernel.event_listener'][0]['method']);
$this->assertEquals(
[
new Reference('request_stack'),
new Reference('contao.framework'),
],
$definition->getArguments()
);

$this->assertSame(
[
'kernel.event_listener' => [
[
'event' => 'contao.preview_url_create',
'method' => 'onPreviewUrlCreate',
],
],
],
$definition->getTags()
);
}

public function testRegistersThePreviewUrlConvertListener(): void
Expand All @@ -101,14 +139,26 @@ public function testRegistersThePreviewUrlConvertListener(): void

$this->assertSame(PreviewUrlConvertListener::class, $definition->getClass());
$this->assertTrue($definition->isPrivate());
$this->assertSame('request_stack', (string) $definition->getArgument(0));
$this->assertSame('contao.framework', (string) $definition->getArgument(1));

$tags = $definition->getTags();

$this->assertArrayHasKey('kernel.event_listener', $tags);
$this->assertSame('contao.preview_url_convert', $tags['kernel.event_listener'][0]['event']);
$this->assertSame('onPreviewUrlConvert', $tags['kernel.event_listener'][0]['method']);
$this->assertEquals(
[
new Reference('request_stack'),
new Reference('contao.framework'),
],
$definition->getArguments()
);

$this->assertSame(
[
'kernel.event_listener' => [
[
'event' => 'contao.preview_url_convert',
'method' => 'onPreviewUrlConvert',
],
],
],
$definition->getTags()
);
}

public function testRegistersTheEventPickerProvider(): void
Expand All @@ -119,22 +169,42 @@ public function testRegistersTheEventPickerProvider(): void

$this->assertSame(EventPickerProvider::class, $definition->getClass());
$this->assertTrue($definition->isPrivate());
$this->assertSame('knp_menu.factory', (string) $definition->getArgument(0));
$this->assertSame('router', (string) $definition->getArgument(1));
$this->assertSame('translator', (string) $definition->getArgument(2));
$this->assertSame('security.helper', (string) $definition->getArgument(3));

$this->assertEquals(
[
new Reference('knp_menu.factory'),
new Reference('router'),
new Reference('translator', ContainerInterface::IGNORE_ON_INVALID_REFERENCE),
new Reference('security.helper'),
],
$definition->getArguments()
);

$this->assertSame(
[
'contao.picker_provider' => [
[
'priority' => 96,
],
],
],
$definition->getTags()
);

$conditionals = $definition->getInstanceofConditionals();

$this->assertArrayHasKey(FrameworkAwareInterface::class, $conditionals);

$childDefinition = $conditionals[FrameworkAwareInterface::class];

$this->assertSame('setFramework', $childDefinition->getMethodCalls()[0][0]);

$tags = $definition->getTags();

$this->assertArrayHasKey('contao.picker_provider', $tags);
$this->assertSame(96, $tags['contao.picker_provider'][0]['priority']);
$this->assertEquals(
[
[
'setFramework',
[new Reference('contao.framework')],
],
],
$childDefinition->getMethodCalls()
);
}
}
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@
"ext-fileinfo": "*",
"composer/composer": "^1.0",
"contao/monorepo-tools": "dev-master",
"contao/php-cs-fixer": "^2.0",
"contao/php-cs-fixer": "^2.2",
"contao/phpstan": "^0.12",
"contao/test-case": "^4.0",
"doctrine/doctrine-migrations-bundle": "^1.1",
Expand Down

0 comments on commit c4bcb6d

Please sign in to comment.