示例#1
0
 /**
  * {@inheritdoc}
  */
 public static function deserialize(array $data) : QueryMessage
 {
     $keys = ['id', 'type', 'timestamp', 'meta_data', 'payload_type', 'payload'];
     foreach ($keys as $key) {
         if (!isset($data[$key])) {
             $message = sprintf('Invalid serialization data: %s', VarPrinter::toString($data));
             throw new DomainException($message);
         }
     }
     if ($data['type'] !== MessageType::QUERY) {
         $message = sprintf('Invalid message type: %s', $data['type']);
         throw new DomainException($message);
     }
     /** @var MessageId $id */
     $id = MessageId::fromString($data['id']);
     /** @var DateTime $timestamp */
     $timestamp = DateTime::fromString($data['timestamp']);
     /** @var MetaData $metaData */
     $metaData = MetaData::create($data['meta_data']);
     /** @var Type $payloadType */
     $payloadType = Type::create($data['payload_type']);
     /** @var string $payloadClass */
     $payloadClass = $payloadType->toClassName();
     assert(Validate::implementsInterface($payloadClass, Query::class), sprintf('Unable to deserialize: %s', $payloadClass));
     /** @var Query $payload */
     $payload = $payloadClass::fromArray($data['payload']);
     return new static($id, $timestamp, $payload, $metaData);
 }
示例#2
0
 /**
  * @expectedException Novuso\System\Exception\KeyException
  */
 public function test_that_get_throws_exception_for_key_not_found()
 {
     $metaData = new MetaData(['username' => 'jrnickell', 'ip_address' => '127.0.0.1']);
     $metaData->get('location');
 }
示例#3
0
 /**
  * Merges the given meta data
  *
  * @param MetaData $data The meta data
  *
  * @return void
  */
 public function merge(MetaData $data)
 {
     foreach ($data->toArray() as $key => $value) {
         $this->set($key, $value);
     }
 }
示例#4
0
 /**
  * @expectedException \Novuso\System\Exception\DomainException
  */
 public function test_that_set_throws_exception_for_invalid_value()
 {
     $metaData = MetaData::create();
     $metaData->set('foo', [new \stdClass()]);
 }
示例#5
0
 public function test_that_equals_returns_false_for_different_value()
 {
     $message = $this->message->mergeMetaData(MetaData::create(['ip_address' => '127.0.0.1']));
     $this->assertFalse($this->message->equals($message));
 }
示例#6
0
 /**
  * {@inheritdoc}
  */
 public function toArray() : array
 {
     return ['id' => $this->id->toString(), 'type' => $this->type->value(), 'timestamp' => $this->timestamp->toString(), 'meta_data' => $this->metaData->toArray(), 'payload_type' => $this->payloadType->toString(), 'payload' => $this->payload->toArray()];
 }