/** * @test */ public function itCanSaveASnapshot() { $id = AggregateId::generate(); $aggregate = AggregateRoot::create($id, 'test'); $snapshot = Snapshot::take($id, $aggregate, '10'); $expectedSerializedAggregate = sprintf('["serialized": "%s"]', spl_object_hash($snapshot)); $expectedStorageArray = ['version' => '10', 'created_at' => $snapshot->getCreatedAt()->format('U.u'), 'snapshot' => ['type' => AggregateRoot::class, 'payload' => $expectedSerializedAggregate]]; $expectedStoredData = '["version etc..."]'; $this->serializer->serialize($aggregate, 'json')->willReturn($expectedSerializedAggregate)->shouldBeCalledTimes(1); $this->serializer->serialize($expectedStorageArray, 'json')->willReturn($expectedStoredData)->shouldBeCalledTimes(1); $this->client->hset(RedisSnapshotAdapter::KEY_NAMESPACE, (string) $id, $expectedStoredData)->shouldBeCalledTimes(1); $adapter = $this->createAdapter(); $adapter->save($snapshot); }
/** * @inheritdoc */ public function save(Snapshot $snapshot) { $data = ['version' => $snapshot->getVersion(), 'created_at' => $snapshot->getCreatedAt()->format('U.u'), 'snapshot' => ['type' => $snapshot->getType(), 'payload' => $this->serializer->serialize($snapshot->getAggregate(), 'json')]]; $this->redis->hset(static::KEY_NAMESPACE, (string) $snapshot->getAggregateId(), $this->serializer->serialize($data, 'json')); }
private function createEventData(DomainMessage $event) { return ['aggregate_id' => (string) $event->getId(), 'version' => $event->getVersion(), 'type' => $event->getType(), 'payload' => $this->serializer->serialize($event->getPayload(), 'json'), 'recorded_on' => $event->getRecordedOn()->format('Y-m-d\\TH:i:s.u')]; }
private function createEventData(Snapshot $snapshot) { return ['aggregate_id' => $snapshot->getAggregateId(), 'version' => $snapshot->getVersion(), 'created_at' => $snapshot->getCreatedAt()->getTimestamp(), 'type' => $snapshot->getType(), 'payload' => $this->serializer->serialize($snapshot->getAggregate(), 'json')]; }