8000 Make the in-memory transport resettable · symfony/symfony@8f8c82e · GitHub
[go: up one dir, main page]

Skip to content

Commit 8f8c82e

Browse files
committed
Make the in-memory transport resettable
1 parent fe75920 commit 8f8c82e

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/messenger.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272

7373
<service id="messenger.transport.in_memory.factory" class="Symfony\Component\Messenger\Transport\InMemoryTransportFactory">
7474
<tag name="messenger.transport_factory" />
75+
<tag name="kernel.reset" method="reset" />
7576
</service>
7677

7778
<!-- retry -->

src/Symfony/Component/Messenger/Tests/Transport/InMemoryTransportFactoryTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
namespace Symfony\Component\Messenger\Tests\Transport;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\Messenger\Envelope;
16+
use Symfony\Component\Messenger\Tests\Fixtures\DummyMessage;
1517
use Symfony\Component\Messenger\Transport\InMemoryTransport;
1618
use Symfony\Component\Messenger\Transport\InMemoryTransportFactory;
1719
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
@@ -52,6 +54,16 @@ public function testCreateTransport()
5254
$this->assertInstanceOf(InMemoryTransport::class, $this->factory->createTransport('in-memory://', [], $serializer));
5355
}
5456

57+
public function testResetCreatedTransports()
58+
{
59+
$transport = $this->factory->createTransport('in-memory://', [], $this->createMock(SerializerInterface::class));
60+
$transport->send(Envelope::wrap(new DummyMessage('Hello.')));
61+
62+
$this->assertCount(1, $transport->get());
63+
$this->factory->reset();
64+
$this->assertCount(0, $transport->get());
65+
}
66+
5567
public function provideDSN(): array
5668
{
5769
return [

src/Symfony/Component/Messenger/Transport/InMemoryTransportFactory.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,34 @@
1212
namespace Symfony\Component\Messenger\Transport;
1313

1414
use Symfony\Component\Messenger\Transport\Serialization\SerializerInterface;
15+
use Symfony\Contracts\Service\ResetInterface;
1516

16-
class InMemoryTransportFactory implements TransportFactoryInterface
17+
/**
18+
* @author Gary PEGEOT <garypegeot@gmail.com>
19+
*
20+
* @experimental in 4.3
21+
*/
22+
class InMemoryTransportFactory implements TransportFactoryInterface, ResetInterface
1723
{
24+
/**
25+
* @var InMemoryTransport[]
26+
*/
27+
private $createdTransports = [];
28+
1829
public function createTransport(string $dsn, array $options, SerializerInterface $serializer): TransportInterface
1930
{
20-
return new InMemoryTransport();
31+
return $this->createdTransports[] = new InMemoryTransport();
2132
}
2233

2334
public function supports(string $dsn, array $options): bool
2435
{
2536
return 0 === strpos($dsn, 'in-memory://');
2637
}
38+
39+
public function reset()
40+
{
41+
foreach ($this->createdTransports as $transport) {
42+
$transport->reset();
43+
}
44+
}
2745
}

0 commit comments

Comments
 (0)
0