Skip to content

Commit 1b5ba3f

Browse files
committed
Fiw after review
1 parent a59fd33 commit 1b5ba3f

File tree

3 files changed

+60
-7
lines changed

3 files changed

+60
-7
lines changed

src/Turbo/src/DependencyInjection/Compiler/RegisterMercureHubs.php renamed to src/Turbo/src/DependencyInjection/Compiler/RegisterMercureHubsPass.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@
2323
*
2424
* @author Pierre Ambroise<pierre27.ambroise@gmail.com>
2525
*/
26-
final class RegisterMercureHubs implements CompilerPassInterface
26+
final class RegisterMercureHubsPass implements CompilerPassInterface
2727
{
2828
public function process(ContainerBuilder $container)
2929
{
30-
foreach ($container->findTaggedServiceIds('mercure.hub') as $hubId => $tag) {
30+
foreach ($container->findTaggedServiceIds('mercure.hub') as $hubId => $tags) {
3131
$name = str_replace('mercure.hub.', '', $hubId);
3232

3333
$container->register("turbo.mercure.$name.renderer", TurboStreamListenRenderer::class)
@@ -37,9 +37,11 @@ public function process(ContainerBuilder $container)
3737
->addArgument(new Reference('twig'))
3838
->addTag('turbo.renderer.stream_listen', ['transport' => $name]);
3939

40-
if (isset($tag['default']) && $tag['default']) {
41-
$container->getDefinition("turbo.mercure.{$name}.renderer")
42-
->addTag('turbo.renderer.stream_listen', ['transport' => 'default']);
40+
foreach ($tags as $tag) {
41+
if (isset($tag['default']) && $tag['default'] && 'default' !== $name) {
42+
$container->getDefinition("turbo.mercure.$name.renderer")
43+
->addTag('turbo.renderer.stream_listen', ['transport' => 'default']);
44+
}
4345
}
4446

4547
$container->register("turbo.mercure.$name.broadcaster", Broadcaster::class)

src/Turbo/src/TurboBundle.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
1616
use Symfony\Component\DependencyInjection\ContainerBuilder;
1717
use Symfony\Component\HttpKernel\Bundle\Bundle;
18-
use Symfony\UX\Turbo\DependencyInjection\Compiler\RegisterMercureHubs;
18+
use Symfony\UX\Turbo\DependencyInjection\Compiler\RegisterMercureHubsPass;
1919

2020
/**
2121
* @author Kévin Dunglas <kevin@dunglas.fr>
@@ -29,7 +29,7 @@ public function build(ContainerBuilder $container): void
2929
{
3030
parent::build($container);
3131

32-
$container->addCompilerPass(new RegisterMercureHubs());
32+
$container->addCompilerPass(new RegisterMercureHubsPass());
3333

3434
$container->addCompilerPass(new class implements CompilerPassInterface {
3535
public function process(ContainerBuilder $container): void
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace src\Turbo\tests\Compiler;
13+
14+
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\DependencyInjection\ContainerBuilder;
16+
use Symfony\UX\Turbo\DependencyInjection\Compiler\RegisterMercureHubsPass;
17+
18+
final class RegisterMercureHubsPassTest extends TestCase
19+
{
20+
public function testProcess(): void
21+
{
22+
$pass = new RegisterMercureHubsPass();
23+
24+
$container = new ContainerBuilder();
25+
$container->register('hub')
26+
->addTag('mercure.hub');
27+
28+
$pass->process($container);
29+
30+
$this->assertTrue($container->has('turbo.mercure.hub.renderer'));
31+
$this->assertTrue($container->has('turbo.mercure.hub.broadcaster'));
32+
}
33+
34+
public function testProcessWithDefault(): void
35+
{
36+
$pass = new RegisterMercureHubsPass();
37+
38+
$container = new ContainerBuilder();
39+
$container->register('hub1')
40+
->addTag('mercure.hub');
41+
42+
$container->register('default_hub')
43+
->addTag('mercure.hub', ['default' => true]);
44+
45+
$pass->process($container);
46+
47+
$this->assertSame([
48+
'transport' => 'default',
49+
], $container->getDefinition('turbo.mercure.default_hub.renderer')->getTag('turbo.renderer.stream_listen')[1]);
50+
}
51+
}

0 commit comments

Comments
 (0)