/** * @test */ public function itIsTheSameAfterReconstitution() { $events = []; foreach ($this->basket->recordedEvents() as $event) { $events[] = $event; } $this->basket->eraseRecordedEvents(); $history = new AggregateHistory($this->basket->aggregateId(), $events); $reconstitutedBasket = Basket::fromHistory($history); $this->assertEquals($this->basket, $reconstitutedBasket); }
/** * @param BasketId $basketId * @return Basket */ public static function pickUp(BasketId $basketId) { $basket = new Basket(); $basket->recordThat(new BasketWasPickedUp($basketId)); return $basket; }
/** * @test */ public function itReconstitutesAnAggregateFromHistoryRetrievedFromTheEventStore() { $id = BasketId::fromString('some-basket'); $eventStream = $this->testHelper->getEventStream($id); $aggregateHistory = $this->testHelper->getAggregateHistory($id); $aggregate = Basket::pickUp($id); $this->eventStore->expects($this->once())->method('read')->with($this->equalTo($id))->will($this->returnValue($eventStream)); $this->eventWrapper->expects($this->once())->method('unwrap')->with($this->equalTo($eventStream))->will($this->returnValue($aggregateHistory)); $this->aggregateFactory->expects($this->once())->method('reconstituteFromHistory')->with($this->equalTo($aggregateHistory))->will($this->returnValue($aggregate)); $foundAggregate = $this->repository->get($id); $this->assertSame($aggregate, $foundAggregate); }