From 171d70ae15a280297b7b451d102d998ec5223625 Mon Sep 17 00:00:00 2001 From: Daniel Badura Date: Tue, 7 Oct 2025 12:23:39 +0200 Subject: [PATCH] The `RecordedOnArgumentResolver` can now also handle message with `RecordedOnHeader` --- .../RecordedOnArgumentResolver.php | 5 +++++ .../RecordedOnArgumentResolverTest.php | 19 ++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolver.php b/src/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolver.php index 2a2e7dc45..2320a7ab6 100644 --- a/src/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolver.php +++ b/src/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolver.php @@ -8,11 +8,16 @@ use Patchlevel\EventSourcing\Aggregate\AggregateHeader; use Patchlevel\EventSourcing\Message\Message; use Patchlevel\EventSourcing\Metadata\Subscriber\ArgumentMetadata; +use Patchlevel\EventSourcing\Store\Header\RecordedOnHeader; final class RecordedOnArgumentResolver implements ArgumentResolver { public function resolve(ArgumentMetadata $argument, Message $message): DateTimeImmutable { + if ($message->hasHeader(RecordedOnHeader::class)) { + return $message->header(RecordedOnHeader::class)->recordedOn; + } + return $message->header(AggregateHeader::class)->recordedOn; } diff --git a/tests/Unit/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolverTest.php b/tests/Unit/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolverTest.php index 7e284a0a4..3ef1a8e8c 100644 --- a/tests/Unit/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolverTest.php +++ b/tests/Unit/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolverTest.php @@ -8,6 +8,7 @@ use Patchlevel\EventSourcing\Aggregate\AggregateHeader; use Patchlevel\EventSourcing\Message\Message; use Patchlevel\EventSourcing\Metadata\Subscriber\ArgumentMetadata; +use Patchlevel\EventSourcing\Store\Header\RecordedOnHeader; use Patchlevel\EventSourcing\Subscription\Subscriber\ArgumentResolver\RecordedOnArgumentResolver; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; @@ -35,7 +36,7 @@ public function testSupport(): void ); } - public function testResolve(): void + public function testResolveFromAggregateHeader(): void { $date = new DateTimeImmutable(); @@ -57,4 +58,20 @@ public function testResolve(): void ), ); } + + public function testResolveFromRecordedOnHeader(): void + { + $date = new DateTimeImmutable(); + + $resolver = new RecordedOnArgumentResolver(); + $message = (new Message(new stdClass()))->withHeader(new RecordedOnHeader($date)); + + self::assertSame( + $date, + $resolver->resolve( + new ArgumentMetadata('foo', DateTimeImmutable::class), + $message, + ), + ); + } }