Skip to content

Commit f94735a

Browse files
authored
Merge pull request #782 from patchlevel/recorded-on-resolver-with-recorded-on-header
The `RecordedOnArgumentResolver` can now also handle message with `RecordedOnHeader`
2 parents 209ff59 + 171d70a commit f94735a

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolver.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,16 @@
88
use Patchlevel\EventSourcing\Aggregate\AggregateHeader;
99
use Patchlevel\EventSourcing\Message\Message;
1010
use Patchlevel\EventSourcing\Metadata\Subscriber\ArgumentMetadata;
11+
use Patchlevel\EventSourcing\Store\Header\RecordedOnHeader;
1112

1213
final class RecordedOnArgumentResolver implements ArgumentResolver
1314
{
1415
public function resolve(ArgumentMetadata $argument, Message $message): DateTimeImmutable
1516
{
17+
if ($message->hasHeader(RecordedOnHeader::class)) {
18+
return $message->header(RecordedOnHeader::class)->recordedOn;
19+
}
20+
1621
return $message->header(AggregateHeader::class)->recordedOn;
1722
}
1823

tests/Unit/Subscription/Subscriber/ArgumentResolver/RecordedOnArgumentResolverTest.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Patchlevel\EventSourcing\Aggregate\AggregateHeader;
99
use Patchlevel\EventSourcing\Message\Message;
1010
use Patchlevel\EventSourcing\Metadata\Subscriber\ArgumentMetadata;
11+
use Patchlevel\EventSourcing\Store\Header\RecordedOnHeader;
1112
use Patchlevel\EventSourcing\Subscription\Subscriber\ArgumentResolver\RecordedOnArgumentResolver;
1213
use PHPUnit\Framework\Attributes\CoversClass;
1314
use PHPUnit\Framework\TestCase;
@@ -35,7 +36,7 @@ public function testSupport(): void
3536
);
3637
}
3738

38-
public function testResolve(): void
39+
public function testResolveFromAggregateHeader(): void
3940
{
4041
$date = new DateTimeImmutable();
4142

@@ -57,4 +58,20 @@ public function testResolve(): void
5758
),
5859
);
5960
}
61+
62+
public function testResolveFromRecordedOnHeader(): void
63+
{
64+
$date = new DateTimeImmutable();
65+
66+
$resolver = new RecordedOnArgumentResolver();
67+
$message = (new Message(new stdClass()))->withHeader(new RecordedOnHeader($date));
68+
69+
self::assertSame(
70+
$date,
71+
$resolver->resolve(
72+
new ArgumentMetadata('foo', DateTimeImmutable::class),
73+
$message,
74+
),
75+
);
76+
}
6077
}

0 commit comments

Comments
 (0)