Skip to content

Commit d0eb0f2

Browse files
authored
Merge pull request #16 from bwaidelich/feature/in-memory-eventstore-clock
FEATURE: Allow InMemoryEventStore clock to be replaced
2 parents 5ccc95b + 586caf5 commit d0eb0f2

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/Helpers/InMemoryEventStore.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Wwwision\DCBEventStore\Helpers;
66

77
use DateTimeImmutable;
8+
use Psr\Clock\ClockInterface;
89
use Wwwision\DCBEventStore\EventStore;
910
use Wwwision\DCBEventStore\Exceptions\ConditionalAppendFailed;
1011
use Wwwision\DCBEventStore\Types\AppendCondition;
@@ -33,14 +34,15 @@ final class InMemoryEventStore implements EventStore
3334
{
3435
private EventEnvelopes $eventEnvelopes;
3536

36-
private function __construct()
37-
{
37+
private function __construct(
38+
private readonly ClockInterface $clock,
39+
) {
3840
$this->eventEnvelopes = EventEnvelopes::none();
3941
}
4042

41-
public static function create(): self
43+
public static function create(ClockInterface|null $clock = null): self
4244
{
43-
return new self();
45+
return new self($clock ?? new SystemClock());
4446
}
4547

4648
public function read(StreamQuery $query, ?ReadOptions $options = null): InMemoryEventStream
@@ -108,7 +110,7 @@ public function append(Events|Event $events, AppendCondition $condition): void
108110
$newEventEnvelopes = $newEventEnvelopes->append(
109111
new EventEnvelope(
110112
$sequenceNumber,
111-
new DateTimeImmutable(),
113+
$this->clock->now(),
112114
$event,
113115
)
114116
);

0 commit comments

Comments
 (0)