Skip to content

Commit 32fbc9e

Browse files
committed
test: use monolog test handler for logger assertions
1 parent 59076a8 commit 32fbc9e

9 files changed

Lines changed: 98 additions & 96 deletions

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
},
2323
"require-dev": {
2424
"friendsofphp/php-cs-fixer": "^3.94",
25+
"monolog/monolog": "^3.0",
2526
"phpstan/phpstan": "^2.1",
2627
"phpunit/phpunit": "^11.5"
2728
},

tests/EventSubscriber/SendMessageToTransportsEventSubscriberTest.php

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
use C10k\MessengerLoggingBundle\Logging\MessengerLogContextBuilder;
99
use C10k\MessengerLoggingBundle\Stamp\MessageUuidStamp;
1010
use C10k\MessengerLoggingBundle\Tests\Fixtures\DummyMessage;
11-
use C10k\MessengerLoggingBundle\Tests\Fixtures\InMemoryLogger;
11+
use C10k\MessengerLoggingBundle\Tests\Fixtures\MonologTestLoggerTrait;
12+
use Monolog\Level;
1213
use Psr\Log\LogLevel;
1314
use PHPUnit\Framework\Attributes\CoversClass;
1415
use PHPUnit\Framework\TestCase;
@@ -20,9 +21,11 @@
2021
#[CoversClass(SendMessageToTransportsEventSubscriber::class)]
2122
final class SendMessageToTransportsEventSubscriberTest extends TestCase
2223
{
24+
use MonologTestLoggerTrait;
25+
2326
public function testItAssignsAUuidStampAndLogsQueueing(): void
2427
{
25-
$logger = new InMemoryLogger();
28+
[$logger, $handler] = $this->createTestLogger();
2629
$subscriber = new SendMessageToTransportsEventSubscriber(new MessengerLogContextBuilder(), $logger);
2730
$event = new SendMessageToTransportsEvent(
2831
new Envelope(new DummyMessage('message-1')),
@@ -37,20 +40,21 @@ public function send(Envelope $envelope): Envelope
3740
$subscriber->onQueued($event);
3841

3942
$uuidStamp = $event->getEnvelope()->last(MessageUuidStamp::class);
43+
$record = $this->lastRecord($handler);
4044

4145
self::assertInstanceOf(MessageUuidStamp::class, $uuidStamp);
4246
self::assertSame(
4347
$uuidStamp->getUuid(),
4448
UuidV7::fromString($uuidStamp->getUuid())->toRfc4122(),
4549
);
46-
self::assertSame('Messenger message queued.', $logger->lastRecord()['message']);
47-
self::assertSame($uuidStamp->getUuid(), $logger->lastRecord()['context']['uuid']);
48-
self::assertSame(['async'], $logger->lastRecord()['context']['sender_names']);
50+
self::assertSame('Messenger message queued.', $record->message);
51+
self::assertSame($uuidStamp->getUuid(), $record->context['uuid']);
52+
self::assertSame(['async'], $record->context['sender_names']);
4953
}
5054

5155
public function testItUsesConfiguredLogLevelForQueueing(): void
5256
{
53-
$logger = new InMemoryLogger();
57+
[$logger, $handler] = $this->createTestLogger();
5458
$subscriber = new SendMessageToTransportsEventSubscriber(
5559
new MessengerLogContextBuilder(),
5660
$logger,
@@ -68,6 +72,6 @@ public function send(Envelope $envelope): Envelope
6872

6973
$subscriber->onQueued($event);
7074

71-
self::assertSame(LogLevel::DEBUG, $logger->lastRecord()['level']);
75+
self::assertSame(Level::Debug, $this->lastRecord($handler)->level);
7276
}
7377
}

tests/EventSubscriber/WorkerMessageFailedEventSubscriberTest.php

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
use C10k\MessengerLoggingBundle\Logging\MessengerLogContextBuilder;
99
use C10k\MessengerLoggingBundle\Stamp\MessageUuidStamp;
1010
use C10k\MessengerLoggingBundle\Tests\Fixtures\DummyMessage;
11-
use C10k\MessengerLoggingBundle\Tests\Fixtures\InMemoryLogger;
11+
use C10k\MessengerLoggingBundle\Tests\Fixtures\MonologTestLoggerTrait;
12+
use Monolog\Level;
1213
use Psr\Log\LogLevel;
1314
use PHPUnit\Framework\Attributes\CoversClass;
1415
use PHPUnit\Framework\TestCase;
@@ -20,9 +21,11 @@
2021
#[CoversClass(WorkerMessageFailedEventSubscriber::class)]
2122
final class WorkerMessageFailedEventSubscriberTest extends TestCase
2223
{
24+
use MonologTestLoggerTrait;
25+
2326
public function testItLogsFailuresIncludingRetryInformation(): void
2427
{
25-
$logger = new InMemoryLogger();
28+
[$logger, $handler] = $this->createTestLogger();
2629
$subscriber = new WorkerMessageFailedEventSubscriber(new MessengerLogContextBuilder(), $logger);
2730
$event = new WorkerMessageFailedEvent(
2831
new Envelope(
@@ -40,18 +43,20 @@ public function testItLogsFailuresIncludingRetryInformation(): void
4043

4144
$subscriber->onFailed($event);
4245

43-
self::assertSame('Messenger message failed.', $logger->lastRecord()['message']);
44-
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $logger->lastRecord()['context']['uuid']);
45-
self::assertSame('async', $logger->lastRecord()['context']['receiver_name']);
46-
self::assertSame(1, $logger->lastRecord()['context']['retry_count']);
47-
self::assertTrue($logger->lastRecord()['context']['will_retry']);
48-
self::assertSame(\RuntimeException::class, $logger->lastRecord()['context']['exception_class']);
49-
self::assertSame('boom', $logger->lastRecord()['context']['exception_message']);
46+
$record = $this->lastRecord($handler);
47+
48+
self::assertSame('Messenger message failed.', $record->message);
49+
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $record->context['uuid']);
50+
self::assertSame('async', $record->context['receiver_name']);
51+
self::assertSame(1, $record->context['retry_count']);
52+
self::assertTrue($record->context['will_retry']);
53+
self::assertSame(\RuntimeException::class, $record->context['exception_class']);
54+
self::assertSame('boom', $record->context['exception_message']);
5055
}
5156

5257
public function testItUsesConfiguredLogLevelForFailures(): void
5358
{
54-
$logger = new InMemoryLogger();
59+
[$logger, $handler] = $this->createTestLogger();
5560
$subscriber = new WorkerMessageFailedEventSubscriber(
5661
new MessengerLogContextBuilder(),
5762
$logger,
@@ -65,6 +70,6 @@ public function testItUsesConfiguredLogLevelForFailures(): void
6570

6671
$subscriber->onFailed($event);
6772

68-
self::assertSame(LogLevel::INFO, $logger->lastRecord()['level']);
73+
self::assertSame(Level::Info, $this->lastRecord($handler)->level);
6974
}
7075
}

tests/EventSubscriber/WorkerMessageHandledEventSubscriberTest.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use C10k\MessengerLoggingBundle\Logging\MessengerLogContextBuilder;
99
use C10k\MessengerLoggingBundle\Stamp\MessageUuidStamp;
1010
use C10k\MessengerLoggingBundle\Tests\Fixtures\DummyMessage;
11-
use C10k\MessengerLoggingBundle\Tests\Fixtures\InMemoryLogger;
11+
use C10k\MessengerLoggingBundle\Tests\Fixtures\MonologTestLoggerTrait;
1212
use PHPUnit\Framework\Attributes\CoversClass;
1313
use PHPUnit\Framework\TestCase;
1414
use Symfony\Component\Messenger\Envelope;
@@ -18,9 +18,11 @@
1818
#[CoversClass(WorkerMessageHandledEventSubscriber::class)]
1919
final class WorkerMessageHandledEventSubscriberTest extends TestCase
2020
{
21+
use MonologTestLoggerTrait;
22+
2123
public function testItLogsHandledMessages(): void
2224
{
23-
$logger = new InMemoryLogger();
25+
[$logger, $handler] = $this->createTestLogger();
2426
$subscriber = new WorkerMessageHandledEventSubscriber(new MessengerLogContextBuilder(), $logger);
2527

2628
$subscriber->onHandled(
@@ -36,8 +38,10 @@ public function testItLogsHandledMessages(): void
3638
),
3739
);
3840

39-
self::assertSame('Messenger message handled.', $logger->lastRecord()['message']);
40-
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $logger->lastRecord()['context']['uuid']);
41-
self::assertSame('async', $logger->lastRecord()['context']['receiver_name']);
41+
$record = $this->lastRecord($handler);
42+
43+
self::assertSame('Messenger message handled.', $record->message);
44+
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $record->context['uuid']);
45+
self::assertSame('async', $record->context['receiver_name']);
4246
}
4347
}

tests/EventSubscriber/WorkerMessageReceivedEventSubscriberTest.php

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use C10k\MessengerLoggingBundle\Logging\MessengerLogContextBuilder;
99
use C10k\MessengerLoggingBundle\Stamp\MessageUuidStamp;
1010
use C10k\MessengerLoggingBundle\Tests\Fixtures\DummyMessage;
11-
use C10k\MessengerLoggingBundle\Tests\Fixtures\InMemoryLogger;
11+
use C10k\MessengerLoggingBundle\Tests\Fixtures\MonologTestLoggerTrait;
1212
use PHPUnit\Framework\Attributes\CoversClass;
1313
use PHPUnit\Framework\TestCase;
1414
use Symfony\Component\Messenger\Envelope;
@@ -19,9 +19,11 @@
1919
#[CoversClass(WorkerMessageReceivedEventSubscriber::class)]
2020
final class WorkerMessageReceivedEventSubscriberTest extends TestCase
2121
{
22+
use MonologTestLoggerTrait;
23+
2224
public function testItLogsReceiveFromFailedQueueWithOriginInformation(): void
2325
{
24-
$logger = new InMemoryLogger();
26+
[$logger, $handler] = $this->createTestLogger();
2527
$subscriber = new WorkerMessageReceivedEventSubscriber(new MessengerLogContextBuilder(), $logger);
2628
$event = new WorkerMessageReceivedEvent(
2729
new Envelope(
@@ -37,13 +39,15 @@ public function testItLogsReceiveFromFailedQueueWithOriginInformation(): void
3739

3840
$subscriber->onReceived($event);
3941

40-
self::assertSame('Messenger message received.', $logger->lastRecord()['message']);
41-
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $logger->lastRecord()['context']['uuid']);
42-
self::assertSame('failed', $logger->lastRecord()['context']['receiver_name']);
43-
self::assertTrue($logger->lastRecord()['context']['from_failed_transport']);
42+
$record = $this->lastRecord($handler);
43+
44+
self::assertSame('Messenger message received.', $record->message);
45+
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $record->context['uuid']);
46+
self::assertSame('failed', $record->context['receiver_name']);
47+
self::assertTrue($record->context['from_failed_transport']);
4448
self::assertSame(
4549
'async',
46-
$logger->lastRecord()['context']['failed_transport_original_receiver_name'],
50+
$record->context['failed_transport_original_receiver_name'],
4751
);
4852
}
4953
}

tests/EventSubscriber/WorkerMessageRetriedEventSubscriberTest.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use C10k\MessengerLoggingBundle\Logging\MessengerLogContextBuilder;
99
use C10k\MessengerLoggingBundle\Stamp\MessageUuidStamp;
1010
use C10k\MessengerLoggingBundle\Tests\Fixtures\DummyMessage;
11-
use C10k\MessengerLoggingBundle\Tests\Fixtures\InMemoryLogger;
11+
use C10k\MessengerLoggingBundle\Tests\Fixtures\MonologTestLoggerTrait;
1212
use PHPUnit\Framework\Attributes\CoversClass;
1313
use PHPUnit\Framework\TestCase;
1414
use Symfony\Component\Messenger\Envelope;
@@ -19,9 +19,11 @@
1919
#[CoversClass(WorkerMessageRetriedEventSubscriber::class)]
2020
final class WorkerMessageRetriedEventSubscriberTest extends TestCase
2121
{
22+
use MonologTestLoggerTrait;
23+
2224
public function testItLogsRetriedMessages(): void
2325
{
24-
$logger = new InMemoryLogger();
26+
[$logger, $handler] = $this->createTestLogger();
2527
$subscriber = new WorkerMessageRetriedEventSubscriber(new MessengerLogContextBuilder(), $logger);
2628

2729
$subscriber->onRetried(
@@ -38,9 +40,11 @@ public function testItLogsRetriedMessages(): void
3840
),
3941
);
4042

41-
self::assertSame('Messenger message scheduled for retry.', $logger->lastRecord()['message']);
42-
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $logger->lastRecord()['context']['uuid']);
43-
self::assertSame(2, $logger->lastRecord()['context']['retry_count']);
44-
self::assertSame('async', $logger->lastRecord()['context']['receiver_name']);
43+
$record = $this->lastRecord($handler);
44+
45+
self::assertSame('Messenger message scheduled for retry.', $record->message);
46+
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $record->context['uuid']);
47+
self::assertSame(2, $record->context['retry_count']);
48+
self::assertSame('async', $record->context['receiver_name']);
4549
}
4650
}

tests/EventSubscriber/WorkerMessageSkipEventSubscriberTest.php

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use C10k\MessengerLoggingBundle\Logging\MessengerLogContextBuilder;
99
use C10k\MessengerLoggingBundle\Stamp\MessageUuidStamp;
1010
use C10k\MessengerLoggingBundle\Tests\Fixtures\DummyMessage;
11-
use C10k\MessengerLoggingBundle\Tests\Fixtures\InMemoryLogger;
11+
use C10k\MessengerLoggingBundle\Tests\Fixtures\MonologTestLoggerTrait;
1212
use PHPUnit\Framework\Attributes\CoversClass;
1313
use PHPUnit\Framework\TestCase;
1414
use Symfony\Component\Messenger\Envelope;
@@ -18,13 +18,15 @@
1818
#[CoversClass(WorkerMessageSkipEventSubscriber::class)]
1919
final class WorkerMessageSkipEventSubscriberTest extends TestCase
2020
{
21+
use MonologTestLoggerTrait;
22+
2123
public function testItLogsSkippedMessages(): void
2224
{
2325
if (!class_exists(WorkerMessageSkipEvent::class)) {
2426
self::markTestSkipped('WorkerMessageSkipEvent is not available in this Messenger version.');
2527
}
2628

27-
$logger = new InMemoryLogger();
29+
[$logger, $handler] = $this->createTestLogger();
2830
$subscriber = new WorkerMessageSkipEventSubscriber(new MessengerLogContextBuilder(), $logger);
2931

3032
$subscriber->onSkipped(
@@ -40,8 +42,10 @@ public function testItLogsSkippedMessages(): void
4042
),
4143
);
4244

43-
self::assertSame('Messenger message skipped.', $logger->lastRecord()['message']);
44-
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $logger->lastRecord()['context']['uuid']);
45-
self::assertSame('async', $logger->lastRecord()['context']['receiver_name']);
45+
$record = $this->lastRecord($handler);
46+
47+
self::assertSame('Messenger message skipped.', $record->message);
48+
self::assertSame('018f0c0c-6f9e-7eec-bfc3-6f8d3426f5dc', $record->context['uuid']);
49+
self::assertSame('async', $record->context['receiver_name']);
4650
}
4751
}

tests/Fixtures/InMemoryLogger.php

Lines changed: 0 additions & 55 deletions
This file was deleted.
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace C10k\MessengerLoggingBundle\Tests\Fixtures;
6+
7+
use Monolog\Handler\TestHandler;
8+
use Monolog\LogRecord;
9+
use Monolog\Logger;
10+
use PHPUnit\Framework\Assert;
11+
12+
trait MonologTestLoggerTrait
13+
{
14+
/**
15+
* @return array{Logger, TestHandler}
16+
*/
17+
private function createTestLogger(): array
18+
{
19+
$handler = new TestHandler();
20+
21+
return [new Logger('test', [$handler]), $handler];
22+
}
23+
24+
private function lastRecord(TestHandler $handler): LogRecord
25+
{
26+
$records = $handler->getRecords();
27+
Assert::assertNotSame([], $records, 'No log records captured.');
28+
29+
return $records[array_key_last($records)];
30+
}
31+
}

0 commit comments

Comments
 (0)