diff --git a/tests/CoreBundle/Repository/MessageRepositoryTest.php b/tests/CoreBundle/Repository/MessageRepositoryTest.php index 5065554435..77d05eced2 100644 --- a/tests/CoreBundle/Repository/MessageRepositoryTest.php +++ b/tests/CoreBundle/Repository/MessageRepositoryTest.php @@ -168,43 +168,86 @@ class MessageRepositoryTest extends AbstractApiTest { self::bootKernel(); - $em = $this->getEntityManager(); + $user1 = $this->getUser('admin'); + $user2 = $this->createUser('user2'); - $messageAttachmentRepo = self::getContainer()->get(MessageAttachmentRepository::class); - $messageRepo = self::getContainer()->get(MessageRepository::class); + $user1Token = $this->getUserTokenFromUser($user1); - $admin = $this->getUser('admin'); - $testUser = $this->createUser('test'); + $client = $this->createClientWithCredentials($user1Token); - // Create message. - $message = (new Message()) - ->setTitle('hello') - ->setContent('content') - ->setMsgType(Message::MESSAGE_TYPE_INBOX) - ->setSender($admin) - ->addReceiver($testUser) - ; - - $this->assertHasNoEntityViolations($message); - $messageRepo->update($message); + $responseMessage = $client->request( + 'POST', + '/api/messages', + [ + 'json' => [ + 'msgType' => Message::MESSAGE_TYPE_INBOX, + 'title' => 'Message title', + 'content' => 'Message content', + 'receivers' => [ + [ + 'receiver' => "/api/users/{$user2->getId()}", + 'receiverType' => MessageRelUser::TYPE_TO, + ], + ], + 'sender' => "/api/users/{$user1->getId()}", + ], + ] + ); - $file = $this->getUploadedFile(); + $this->assertResponseIsSuccessful(); + $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); + $this->assertJsonContains( + [ + '@context' => '/api/contexts/Message', + '@type' => 'Message', + 'sender' => [ + '@id' => "/api/users/{$user1->getId()}", + ], + 'receiversTo' => [ + [ + '@type' => 'MessageRelUser', + 'receiver' => [ + '@id' => "/api/users/{$user2->getId()}", + ], + 'receiverType' => MessageRelUser::TYPE_TO, + ], + ], + 'msgType' => Message::MESSAGE_TYPE_INBOX, + 'title' => 'Message title', + 'content' => 'Message content', + ] + ); - $attachment = (new MessageAttachment()) - ->setFilename($file->getFilename()) - ->setMessage($message) - ->setParent($message->getSender()) - ->setCreator($message->getSender()) - ; - $message->addAttachment($attachment); + $messageId = $responseMessage->toArray()['id']; - $em->persist($attachment); - $messageAttachmentRepo->addFile($attachment, $file); - $em->flush(); + $file = $this->getUploadedFile(); - $em->clear(); + $responseAttachment = $client->request( + 'POST', + '/api/message_attachments', + [ + 'headers' => [ + 'Content-Type' => 'multipart/form-data', + ], + 'extra' => [ + 'files' => [ + 'file' => $file, + ], + 'parameters' => [ + 'messageId' => $messageId, + ], + ], + ] + ); - $this->assertSame(1, $messageAttachmentRepo->count([])); + $this->assertResponseIsSuccessful(); + $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); + $this->assertJsonContains( + [ + '@context' => '/api/contexts/MessageAttachment', + '@type' => 'http://schema.org/MediaObject', + ] + ); } public function testDeleteMessage(): void