From ecc932d6563b16a617a6286ed1ced9028258eb30 Mon Sep 17 00:00:00 2001 From: Eric Braun Date: Wed, 4 Jan 2017 11:01:11 +0100 Subject: [PATCH] adds early return if no pending event is present closes #42 --- src/Aggregate/AggregateRepository.php | 8 ++++++-- tests/Aggregate/AggregateRepositoryTest.php | 11 +++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Aggregate/AggregateRepository.php b/src/Aggregate/AggregateRepository.php index a9d430f..942df5b 100644 --- a/src/Aggregate/AggregateRepository.php +++ b/src/Aggregate/AggregateRepository.php @@ -92,9 +92,13 @@ public function saveAggregateRoot($eventSourcedAggregateRoot): void $createStream = false; - $firstEvent = $domainEvents[0]; + $firstEvent = reset($domainEvents); - if ($this->isFirstEvent($firstEvent) && $this->oneStreamPerAggregate) { + if (false === $firstEvent) { + return; + } + + if ($this->oneStreamPerAggregate && $this->isFirstEvent($firstEvent)) { $createStream = true; } diff --git a/tests/Aggregate/AggregateRepositoryTest.php b/tests/Aggregate/AggregateRepositoryTest.php index df57542..ad8e1d3 100644 --- a/tests/Aggregate/AggregateRepositoryTest.php +++ b/tests/Aggregate/AggregateRepositoryTest.php @@ -461,4 +461,15 @@ public function it_used_provided_stream_name(): void $this->repository->saveAggregateRoot($user); } + + /** + * @test + * @see https://github.com/prooph/event-sourcing/issues/42 + */ + public function it_does_not_throw_an_exception_if_no_pending_event_is_present() + { + $user = User::create('John Doe', 'contact@prooph.de'); + $this->repository->saveAggregateRoot($user); + $this->repository->saveAggregateRoot($user); + } }