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