/** * @test */ public function it_load_events_for_aggregate() { $aggregateRootId = new BarId('BarId'); $this->db->table('events')->willReturn($this->queryBuilder); $this->queryBuilder->where('aggregate_root_id', 'BarId')->willReturn($this->queryBuilder); $this->queryBuilder->chunk(1000, Argument::any())->willReturn(true); $this->eventStore->load($aggregateRootId); }
/** * @param Builder $builder * @return EventStreamInterface */ protected function getEventStream(Builder $builder) { $events = []; $builder->chunk(1000, function ($dbEvents) use(&$events) { array_push($events, ...array_map(function ($dbEvent) { $dbEvent = (array) $dbEvent; /** @var EventInterface $eventClass */ $eventClass = $dbEvent['type']; $payload = $this->serializer->deserialize($dbEvent['payload']); $payload['id'] = $dbEvent['aggregate_root_id']; return $eventClass::createFromPayload($payload); }, $dbEvents)); }); return new EventStream(...$events); }