/**
  * @test
  */
 public function it_serializes_messages()
 {
     $composer = new DefaultMessageComposer(new JsonSerializer());
     $message = $composer->compose(['test']);
     $this->assertInstanceOf(Message::class, $message);
     $this->assertEquals('["test"]', $message->getBody());
     $this->assertInstanceOf(MessageProperties::class, $message->getProperties());
 }
 /**
  * @param mixed $payload
  *
  * @throws \RuntimeException
  *
  * @return string
  */
 protected function serialize($payload)
 {
     // convert identifier to Doctrine object
     if (is_array($payload) || is_scalar($payload)) {
         // just use the id when no keys are given (Doctrine expects an array like [id: 1234]
         if (is_array($payload) && is_numeric(key($payload))) {
             $payload = current($payload);
         }
         $payload = $this->doctrine->getRepository($this->className)->find($payload);
     }
     // anything else is just wrong at this point
     if (!is_object($payload) || !$payload instanceof $this->className) {
         throw new \RuntimeException(sprintf('Expecting object of type %s, but got %s', $this->className, var_export($payload, true)));
     }
     return parent::serialize($payload);
 }