Skip to content

Commit

Permalink
Register traceable buses for the test environment.
Browse files Browse the repository at this point in the history
  • Loading branch information
Invis1ble committed Jun 4, 2024
1 parent c4f89e9 commit 6b7f103
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 16 deletions.
15 changes: 7 additions & 8 deletions config/services.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,22 @@
https://symfony.com/schema/dic/services/services-1.0.xsd">

<services>
<!-- Default configuration for services in *this* file -->
<defaults autowire="true" autoconfigure="true" />

<service id="Invis1ble\Messenger\Command\CommandBus">
<argument type="service" id="messenger.bus.command"/>
<argument type="service" id="messenger.bus.command" />
</service>
<service id="Invis1ble\Messenger\Command\CommandBusInterface" alias="Invis1ble\Messenger\Command\CommandBus"/>
<service id="Invis1ble\Messenger\Command\CommandBusInterface" alias="Invis1ble\Messenger\Command\CommandBus" />

<service id="Invis1ble\Messenger\Event\EventBus">
<argument type="service" id="messenger.bus.event.async"/>
<argument type="service" id="messenger.bus.event.async" />
</service>
<service id="Invis1ble\Messenger\Event\EventBusInterface" alias="Invis1ble\Messenger\Event\EventBus"/>
<service id="Invis1ble\Messenger\Event\EventBusInterface" alias="Invis1ble\Messenger\Event\EventBus" />

<service id="Invis1ble\Messenger\Query\QueryBus">
<argument type="service" id="messenger.bus.query"/>
<argument type="service" id="messenger.bus.query" />
</service>
<service id="Invis1ble\Messenger\Query\QueryBusInterface" alias="Invis1ble\Messenger\Query\QueryBus"/>
<service id="Invis1ble\Messenger\Query\QueryBusInterface" alias="Invis1ble\Messenger\Query\QueryBus" />

</services>
</container>
</container>
31 changes: 31 additions & 0 deletions config/services_test.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services
https://symfony.com/schema/dic/services/services-1.0.xsd">

<services>

<defaults autowire="true" autoconfigure="true" />

<service id="Invis1ble\Messenger\Command\TraceableCommandBus"
decorates="Invis1ble\Messenger\Command\CommandBus" />

<service id="Invis1ble\Messenger\Command\CommandBusInterface"
alias="Invis1ble\Messenger\Command\TraceableCommandBus" />

<service id="Invis1ble\Messenger\Event\TraceableEventBus"
decorates="Invis1ble\Messenger\Event\EventBus" />

<service id="Invis1ble\Messenger\Event\EventBusInterface"
alias="Invis1ble\Messenger\Event\TraceableEventBus" />

<service id="Invis1ble\Messenger\Query\TraceableQueryBus"
decorates="Invis1ble\Messenger\Query\QueryBus" />

<service id="Invis1ble\Messenger\Query\QueryBusInterface"
alias="Invis1ble\Messenger\Query\TraceableQueryBus" />

</services>

</container>
4 changes: 4 additions & 0 deletions src/Invis1bleMessengerBundle.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ public function loadExtension(
ContainerBuilder $builder,
): void {
$container->import('../config/services.xml');

if ('test' === $container->env()) {
$container->import('../config/services_test.xml');
}
}

public function prependExtension(
Expand Down
45 changes: 37 additions & 8 deletions tests/Invis1bleMessengerBundleTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,13 @@

use Invis1ble\Messenger\Command\CommandBus;
use Invis1ble\Messenger\Command\CommandBusInterface;
use Invis1ble\Messenger\Command\TraceableCommandBus;
use Invis1ble\Messenger\Event\EventBus;
use Invis1ble\Messenger\Event\EventBusInterface;
use Invis1ble\Messenger\Event\TraceableEventBus;
use Invis1ble\Messenger\Query\QueryBus;
use Invis1ble\Messenger\Query\QueryBusInterface;
use Invis1ble\Messenger\Query\TraceableQueryBus;
use Invis1ble\MessengerBundle\DependencyInjection\RegisterMessageHandlersPass;
use Invis1ble\MessengerBundle\Invis1bleMessengerBundle;
use Matthias\SymfonyDependencyInjectionTest\PhpUnit\AbstractExtensionTestCase;
Expand Down Expand Up @@ -44,29 +47,55 @@ public function testContainerHasRegisterMessageHandlersPass(): void
}

#[DataProvider('provideBus')]
public function testContainerContainsBus(string $serviceFqn, string $aliasFqn, string $busName): void
{
public function testContainerContainsBus(
string $busFqn,
string $decoratedBusFqn,
string $busAliasFqn,
string $busName,
): void {
$this->load();
$this->compile();

$this->assertContainerBuilderHasServiceDefinitionWithArgument(
serviceId: $serviceFqn,
serviceId: $decoratedBusFqn,
argumentIndex: 0,
expectedValue: new Reference($busName),
);

$this->assertContainerBuilderHasService($serviceFqn, $serviceFqn);
$this->assertContainerBuilderHasAlias($aliasFqn, $serviceFqn);
$this->assertContainerBuilderHasService($busFqn);

$this->assertContainerBuilderServiceDecoration(
serviceId: $busFqn,
decoratedServiceId: $decoratedBusFqn,
);

$this->assertContainerBuilderHasService($decoratedBusFqn);
$this->assertContainerBuilderHasAlias($busAliasFqn, $busFqn);
}

/**
* @return \Generator<string[]>
*/
public static function provideBus(): iterable
{
yield [CommandBus::class, CommandBusInterface::class, 'messenger.bus.command'];
yield [QueryBus::class, QueryBusInterface::class, 'messenger.bus.query'];
yield [EventBus::class, EventBusInterface::class, 'messenger.bus.event.async'];
yield [
TraceableCommandBus::class,
CommandBus::class,
CommandBusInterface::class,
'messenger.bus.command',
];
yield [
TraceableQueryBus::class,
QueryBus::class,
QueryBusInterface::class,
'messenger.bus.query',
];
yield [
TraceableEventBus::class,
EventBus::class,
EventBusInterface::class,
'messenger.bus.event.async',
];
}

protected function setUp(): void
Expand Down

0 comments on commit 6b7f103

Please sign in to comment.