/**
  * @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')];
 }