/**
  * Creates Comment for Ticket
  *
  * @param $content
  * @param $authorId
  * @param $messageId
  * @param array|null $attachments
  * @return Ticket|null
  */
 public function createCommentForTicket($content, $authorId, $messageId, array $attachments = null)
 {
     if (empty($content)) {
         return null;
     }
     $reference = $this->messageReferenceRepository->getReferenceByMessageId($messageId);
     if (is_null($reference)) {
         $this->logger->error(sprintf('Ticket not found for message: %s', $messageId));
         throw new \RuntimeException('Ticket loading failed, ticket not found.');
     }
     $ticket = $reference->getTicket();
     $command = new CommentCommand();
     $command->ticket = $ticket->getId();
     $command->content = $content;
     $command->author = User::fromString($authorId);
     $command->ticketStatus = $ticket->getStatus();
     $command->attachmentsInput = $this->convertAttachments($attachments);
     $this->commentService->postNewCommentForTicket($command);
     return $ticket;
 }
 /**
  * @test
  */
 public function thatCommentCreatesWithAttachments()
 {
     $author = $this->createAuthor();
     $ticket = $this->createDummyTicket();
     $ticketWithComment = clone $ticket;
     $ticketWithComment->postNewComment($this->comment);
     $this->messageReferenceRepository->expects($this->once())->method('getReferenceByMessageId')->with($this->equalTo(self::DUMMY_MESSAGE_ID))->will($this->returnValue($this->messageReference));
     $this->messageReference->expects($this->once())->method('getTicket')->will($this->returnValue($ticket));
     $this->commentService->expects($this->once())->method('postNewCommentForTicket')->will($this->returnValue($ticketWithComment));
     $this->messageReferenceService->createCommentForTicket(self::DUMMY_COMMENT_CONTENT, (string) $author, self::DUMMY_MESSAGE_ID, $this->attachments());
     $this->assertCount(1, $ticketWithComment->getComments());
     $this->assertEquals($this->comment, $ticketWithComment->getComments()->get(0));
 }