Skip to content

Commit a96e01c

Browse files
committed
feat: refactor after feedback and add kernel.reset tag
1 parent 920b45e commit a96e01c

File tree

5 files changed

+30
-51
lines changed

5 files changed

+30
-51
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,5 +236,6 @@
236236

237237
->set('messenger.sent_messages_to_transport_listener', MessagesSentToTransportsListener::class)
238238
->tag('kernel.event_subscriber')
239+
->tag('kernel.reset', ['method'=>'reset'])
239240
;
240241
};

src/Symfony/Bundle/FrameworkBundle/Test/MessengerAssertionsTrait.php

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,47 +21,25 @@
2121
trait MessengerAssertionsTrait
2222
{
2323
/**
24-
* @param int $count the expected number of messages
25-
* @param string|null $busName The busName to consider. If null all the collected messages will be counted.
24+
* @param int $count The expected number of messages
25+
* @param string|null $busName The busName to consider
26+
* @param string|null $messageFQCN The message object class name to consider
2627
*/
27-
public static function assertMessagesByBusCount(int $count, string $busName = null, string $message = ''): void
28+
public static function assertMessagesCount(int $count, string $busName = null, string $messageFQCN = null, string $message = ''): void
2829
{
29-
self::assertThat(self::getDispatchedMessagesByBusName($busName), new MessengerConstraint\MessageCount($count, $busName), $message);
30+
self::assertThat(self::getDispatchedMessages($busName, $messageFQCN), new MessengerConstraint\MessageCount($count, $busName), $message);
3031
}
3132

32-
/**
33-
* @param int $count the expected number of messages of the given class
34-
* @param string $className the message object class name
35-
*/
36-
public static function assertMessagesOfClassCount(int $count, string $className, string $message = ''): void
37-
{
38-
self::assertThat(self::getDispatchedMessagesByClassName($className), new MessengerConstraint\MessageCount($count, $className), $message);
39-
}
40-
41-
public static function getDispatchedMessagesByBusName(?string $busName, bool $ordered = false): array
33+
public static function getDispatchedMessages(string $busName = null, string $messageFQCN = null): array
4234
{
4335
$container = static::getContainer();
4436
if ($container->has('messenger.sent_messages_to_transport_listener')) {
4537
/** @var MessagesSentToTransportsListener $listener */
4638
$listener = $container->get('messenger.sent_messages_to_transport_listener');
4739

48-
return array_column($listener->getSentMessagesByBus($busName), 'message');
40+
return array_column($listener->getSentMessages($busName, $messageFQCN), 'message');
4941
}
5042
static::fail('A client must have Messenger enabled to make messages assertions .
5143
Did you forget to require symfony/messenger ?');
5244
}
53-
54-
public static function getDispatchedMessagesByClassName(string $className): array
55-
{
56-
$container = static::getContainer();
57-
58-
if ($container->has('messenger.sent_messages_to_transport_listener')) {
59-
/** @var MessagesSentToTransportsListener $listener */
60-
$listener = $container->get('messenger.sent_messages_to_transport_listener');
61-
62-
return array_column($listener->getSentMessagesByClassName($className), 'message');
63-
}
64-
static::fail('A client must have Messenger enabled to make messages assertions.
65-
Did you forget to require symfony/messenger ? ');
66-
}
6745
}

src/Symfony/Bundle/FrameworkBundle/Tests/Functional/MessengerTest.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,20 @@ public function testMessengerAssertion()
2626
$client = $this->createClient(['test_case' => 'Messenger', 'root_config' => 'config.yml', 'debug' => true]);
2727
$response = $client->request('GET', '/send_messenger_message');
2828

29-
$this->assertMessagesByBusCount(6);
30-
$this->assertMessagesByBusCount(2, 'event.bus');
31-
$this->assertMessagesByBusCount(4, 'query.bus');
29+
self::assertMessagesCount(6);
30+
self::assertMessagesCount(2, busName: 'event.bus');
31+
self::assertMessagesCount(4, busName: 'query.bus');
3232

33-
$this->assertMessagesOfClassCount(2, DummyCommand::class);
34-
$this->assertMessagesOfClassCount(3, DummyQuery::class);
35-
$this->assertMessagesOfClassCount(1, DummyMessage::class);
33+
self::assertMessagesCount(2, messageFQCN: DummyCommand::class);
34+
self::assertMessagesCount(3, messageFQCN: DummyQuery::class);
35+
self::assertMessagesCount(1, messageFQCN: DummyMessage::class);
3636

3737
/** @var DummyMessage[] $dummyMessages */
38-
$dummyMessages = $this::getDispatchedMessagesByClassName(DummyMessage::class);
38+
$dummyMessages = self::getDispatchedMessages(messageFQCN: DummyMessage::class);
3939
self::assertCount(1, $dummyMessages);
4040
self::assertStringContainsString('dummy message text', $dummyMessages[0]->getMessage());
4141

42-
$messagesFromQueryBus = $this::getDispatchedMessagesByBusName('query.bus');
42+
$messagesFromQueryBus = self::getDispatchedMessages(busName: 'query.bus');
4343
self::assertCount(4, $messagesFromQueryBus);
4444

4545
self::assertInstanceOf(DummyMessage::class, $messagesFromQueryBus[0]);

src/Symfony/Component/Messenger/EventListener/MessagesSentToTransportsListener.php

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -49,27 +49,29 @@ public function onMessageSent(SendMessageToTransportsEvent $event): void
4949
];
5050
}
5151

52-
public function getSentMessages(): array
52+
public function getSentMessagesByFQCN(array $messages, ?string $className): array
5353
{
54-
return $this->sentMessages;
54+
return array_filter($this->sentMessages, fn ($message) => $message['message']::class === $className);
5555
}
5656

57-
public function getSentMessagesByBus(?string $busName): array
57+
public function getSentMessages(?string $busName, ?string $messageFQCN): array
5858
{
59-
if (null === $busName) {
60-
return $this->getSentMessages();
59+
if (null === $busName && null === $messageFQCN) {
60+
return $this->sentMessages;
6161
}
6262

63-
return array_filter($this->sentMessages, fn ($message) => $message['busName'] === $busName);
64-
}
63+
if (null === $busName) {
64+
return array_filter($this->sentMessages, fn ($message) => $message['message']::class === $messageFQCN);
65+
}
6566

66-
public function getSentMessagesByClassName(?string $className): array
67-
{
68-
if (null === $className) {
69-
return $this->getSentMessages();
67+
if (null === $messageFQCN) {
68+
return array_filter($this->sentMessages, fn ($message) => $message['busName'] === $busName);
7069
}
7170

72-
return array_filter($this->sentMessages, fn ($message) => $message['message']::class === $className);
71+
return array_filter(
72+
array_filter($this->sentMessages, fn ($message) => $message['message']::class === $messageFQCN),
73+
fn ($message) => $message['busName'] === $busName
74+
);
7375
}
7476

7577
public function reset(): void

src/Symfony/Component/Messenger/Test/Constraint/MessageCount.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,11 @@ public function toString(): string
2727
return sprintf('%s has sent "%d" messages', $this->bus ? $this->bus.' ' : '', $this->expectedValue);
2828
}
2929

30-
3130
protected function matches($other): bool
3231
{
3332
return $this->expectedValue === \count($other);
3433
}
3534

36-
3735
protected function failureDescription($other): string
3836
{
3937
return sprintf('the Bus %s (%d sent)', $this->toString(), \count($other));

0 commit comments

Comments
 (0)