/** * @test */ public function itCommitsTheRecordedEventsOfAnAggregateInTheEventStore() { $id = BasketId::fromString('some-basket'); $domainEvents = $this->testHelper->getDomainEvents($id); $eventStream = $this->testHelper->getEventStream($id); $aggregate = $this->testHelper->mockAggregate($id); $aggregate->expects($this->once())->method('hasRecordedEvents')->will($this->returnValue(true)); $aggregate->expects($this->once())->method('recordedEvents')->will($this->returnValue($domainEvents)); $aggregate->expects($this->once())->method('eraseRecordedEvents'); $this->eventWrapper->expects($this->once())->method('wrap')->with($this->equalTo($id), $this->equalTo($domainEvents))->will($this->returnValue($eventStream)); $this->eventStore->expects($this->once())->method('commit')->with($this->equalTo($eventStream)); $this->repository->add($aggregate); }
/** * @test */ public function itMaintainsConsecutivePlayheadAfterUnwrapping() { $id = BasketId::fromString('some-id'); $domainEvents = $this->testHelper->getDomainEvents($id); $eventStream = $this->testHelper->getEventStream($id); $this->eventWrapper->unwrap($eventStream); $newEnvelopeStream = $this->eventWrapper->wrap($id, $domainEvents); /** @var EnvelopsEvent[] $envelopes */ $envelopes = iterator_to_array($newEnvelopeStream); $this->assertSame(3, $envelopes[0]->aggregateVersion()); $this->assertSame(4, $envelopes[1]->aggregateVersion()); $this->assertSame(5, $envelopes[2]->aggregateVersion()); }