]> source.dussan.org Git - nextcloud-server.git/commitdiff
Refactor and fixes on tests
authorVitor Mattos <vitor@php.rio>
Fri, 21 Jan 2022 11:40:29 +0000 (08:40 -0300)
committerVitor Mattos <vitor@php.rio>
Fri, 21 Jan 2022 11:40:29 +0000 (08:40 -0300)
Signed-off-by: Vitor Mattos <vitor@php.rio>
tests/lib/Comments/ManagerTest.php

index d1d9a8a05d4c0975804db214050c0dcafddc37f9..23a9346909aace0bc28248f34298cfecbea98745 100644 (file)
@@ -472,12 +472,13 @@ class ManagerTest extends TestCase {
        }
 
        /**
-        * @dataProvider providerTestSaveNew
+        * @dataProvider providerTestSave
         */
-       public function testSaveNew(string $message, string $actorId, string $verb, ?string $parentId): IComment {
+       public function testSave(string $message, string $actorId, string $verb, ?string $parentId, ?string $id = ''): IComment {
                $manager = $this->getManager();
                $comment = new Comment();
                $comment
+                       ->setId($id)
                        ->setActor('users', $actorId)
                        ->setObject('files', 'file64')
                        ->setMessage($message)
@@ -498,7 +499,7 @@ class ManagerTest extends TestCase {
                return $comment;
        }
 
-       public function providerTestSaveNew(): array {
+       public function providerTestSave(): array {
                return [
                        ['very beautiful, I am impressed!', 'alice', 'comment', null]
                ];
@@ -883,24 +884,16 @@ class ManagerTest extends TestCase {
        /**
         * @dataProvider providerTestReactionAddAndDelete
         *
+        * @param IComment[] $comments
+        * @param array $reactionsExpected
         * @return void
         */
        public function testReactionAddAndDelete(array $comments, array $reactionsExpected) {
                $this->skipIfNotSupport4ByteUTF();
                $manager = $this->getManager();
-               $buffer = [];
-               foreach ($comments as $commentData) {
-                       [$message, $actorId, $verb, $parentText] = $commentData;
-                       $parentId = null;
-                       if ($parentText) {
-                               $parentId = (string) $buffer[$parentText]->getId();
-                       }
-                       $comment = $this->testSaveNew($message, $actorId, $verb, $parentId);
-                       if (!$parentId) {
-                               $buffer[$comment->getMessage()] = $comment;
-                       }
-               }
-               $comment = end($buffer);
+
+               $processedComments = $this->proccessComments($comments);
+               $comment = end($processedComments);
                if ($comment->getParentId()) {
                        $parent = $manager->get($comment->getParentId());
                        $this->assertEqualsCanonicalizing($reactionsExpected, $parent->getReactions());
@@ -917,38 +910,38 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
                                ], ['👍' => 1],
                        ],
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'alice', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
                                ], ['👍' => 1],
                        ],
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
                                ], ['👍' => 2],
                        ],
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction_deleted', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction_deleted', 'message#alice'],
                                ], ['👍' => 1],
                        ],
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
-                                       ['👍', 'alice', 'reaction_deleted', 'message'],
-                                       ['👍', 'frank', 'reaction_deleted', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
+                                       ['👍', 'alice', 'reaction_deleted', 'message#alice'],
+                                       ['👍', 'frank', 'reaction_deleted', 'message#alice'],
                                ], [],
                        ],
                ];
@@ -968,25 +961,38 @@ class ManagerTest extends TestCase {
        }
 
        /**
-        * @dataProvider providerTestRetrieveAllReactions
+        * @param array $data
+        * @return IComment[]
         */
-       public function testRetrieveAllReactions(array $comments, array $expected) {
-               $this->skipIfNotSupport4ByteUTF();
-               $manager = $this->getManager();
-
-               $buffer = [];
-               foreach ($comments as $commentData) {
-                       [$message, $actorId, $verb, $parentText] = $commentData;
+       private function proccessComments(array $data): array {
+               /** @var IComment[] */
+               $comments = [];
+               foreach ($data as $comment) {
+                       [$message, $actorId, $verb, $parentText] = $comment;
                        $parentId = null;
                        if ($parentText) {
-                               $parentId = (string) $buffer[$parentText]->getId();
+                               $parentId = (string) $comments[$parentText]->getId();
                        }
-                       $comment = $this->testSaveNew($message, $actorId, $verb, $parentId);
-                       if (!$parentId) {
-                               $buffer[$comment->getMessage()] = $comment;
+                       $id = '';
+                       if ($verb === 'reaction_deleted') {
+                               $id = $comments[$message . '#' . $actorId]->getId();
                        }
+                       $comment = $this->testSave($message, $actorId, $verb, $parentId, $id);
+                       $comments[$comment->getMessage() . '#' . $comment->getActorId()] = $comment;
                }
-               $all = $manager->retrieveAllReactions($buffer['message']->getId());
+               return $comments;
+       }
+
+       /**
+        * @dataProvider providerTestRetrieveAllReactions
+        */
+       public function testRetrieveAllReactions(array $comments, array $expected) {
+               $this->skipIfNotSupport4ByteUTF();
+               $manager = $this->getManager();
+
+               $processedComments = $this->proccessComments($comments);
+               $comment = reset($processedComments);
+               $all = $manager->retrieveAllReactions($comment->getId());
                $actual = array_map(function ($row) {
                        return [
                                'message' => $row->getMessage(),
@@ -1007,8 +1013,8 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
                                ],
                                [
                                        ['👍', 'alice'],
@@ -1018,9 +1024,9 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
                                ],
                                [
                                        ['👍', 'alice'],
@@ -1037,19 +1043,9 @@ class ManagerTest extends TestCase {
                $this->skipIfNotSupport4ByteUTF();
                $manager = $this->getManager();
 
-               $buffer = [];
-               foreach ($comments as $commentData) {
-                       [$message, $actorId, $verb, $parentText] = $commentData;
-                       $parentId = null;
-                       if ($parentText) {
-                               $parentId = (string) $buffer[$parentText]->getId();
-                       }
-                       $comment = $this->testSaveNew($message, $actorId, $verb, $parentId);
-                       if (!$parentId) {
-                               $buffer[$comment->getMessage()] = $comment;
-                       }
-               }
-               $all = $manager->retrieveAllReactionsWithSpecificReaction($buffer['message']->getId(), $reaction);
+               $processedComments = $this->proccessComments($comments);
+               $comment = reset($processedComments);
+               $all = $manager->retrieveAllReactionsWithSpecificReaction($comment->getId(), $reaction);
                $actual = array_map(function ($row) {
                        return [
                                'message' => $row->getMessage(),
@@ -1071,8 +1067,8 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
                                ],
                                '👍',
                                [
@@ -1083,9 +1079,9 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
-                                       ['👎', 'alice', 'reaction', 'message'],
-                                       ['👍', 'frank', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
+                                       ['👎', 'alice', 'reaction', 'message#alice'],
+                                       ['👍', 'frank', 'reaction', 'message#alice'],
                                ],
                                '👎',
                                [
@@ -1098,44 +1094,68 @@ class ManagerTest extends TestCase {
        /**
         * @dataProvider providerTestGetReactionComment
         */
-       public function testGetReactionComment(array $comments, $expected) {
+       public function testGetReactionComment(array $comments, array $expected, bool $notFound) {
                $this->skipIfNotSupport4ByteUTF();
                $manager = $this->getManager();
 
-               $buffer = [];
-               foreach ($comments as $comment) {
-                       [$message, $actorId, $verb, $parentText] = $comment;
-                       $parentId = null;
-                       if ($parentText) {
-                               $parentId = (string) $buffer[$parentText]->getId();
-                       }
-                       $comment = $this->testSaveNew($message, $actorId, $verb, $parentId);
-                       if (!$parentId) {
-                               $buffer[$comment->getMessage()] = $comment;
-                       }
+               $processedComments = $this->proccessComments($comments);
+
+               $keys = ['message', 'actorId', 'verb', 'parent'];
+               $expected = array_combine($keys, $expected);
+
+               if ($notFound) {
+                       $this->expectException(\OCP\Comments\NotFoundException::class);
                }
+               $comment = $processedComments[$expected['message'] . '#' . $expected['actorId']];
                $actual = $manager->getReactionComment($comment->getParentId(), $comment->getActorType(), $comment->getActorId(), $comment->getMessage());
-               $this->assertEquals($expected[0], $actual->getMessage());
-               $this->assertEquals($expected[1], $actual->getActorId());
-               $this->assertEquals($expected[2], $actual->getVerb());
-               $this->assertEquals($buffer[$expected[3]]->getId(), $actual->getParentId());
+               if (!$notFound) {
+                       $this->assertEquals($expected['message'], $actual->getMessage());
+                       $this->assertEquals($expected['actorId'], $actual->getActorId());
+                       $this->assertEquals($expected['verb'], $actual->getVerb());
+                       $this->assertEquals($processedComments[$expected['parent']]->getId(), $actual->getParentId());
+               }
        }
 
        public function providerTestGetReactionComment(): array {
                return [
                        [
                                [
-                                       ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
+                                       ['message', 'Matthew', 'comment', null],
+                                       ['👍', 'Matthew', 'reaction', 'message#Matthew'],
+                                       ['👍', 'Mark', 'reaction', 'message#Matthew'],
+                                       ['👍', 'Luke', 'reaction', 'message#Matthew'],
+                                       ['👍', 'John', 'reaction', 'message#Matthew'],
                                ],
-                               ['👍', 'alice', 'reaction', 'message'],
+                               ['👍', 'Matthew', 'reaction', 'message#Matthew'],
+                               false,
                        ],
                        [
                                [
-                                       ['message', 'alice', 'comment', null],
-                                       ['👎', 'alice', 'reaction', 'message'],
+                                       ['message', 'Matthew', 'comment', null],
+                                       ['👍', 'Matthew', 'reaction', 'message#Matthew'],
+                                       ['👍', 'Mark', 'reaction', 'message#Matthew'],
+                                       ['👍', 'Luke', 'reaction', 'message#Matthew'],
+                                       ['👍', 'John', 'reaction', 'message#Matthew'],
                                ],
-                               ['👎', 'alice', 'reaction', 'message'],
+                               ['👍', 'Mark', 'reaction', 'message#Matthew'],
+                               false,
+                       ],
+                       [
+                               [
+                                       ['message', 'Matthew', 'comment', null],
+                                       ['👎', 'Matthew', 'reaction', 'message#Matthew'],
+                               ],
+                               ['👎', 'Matthew', 'reaction', 'message#Matthew'],
+                               false,
+                       ],
+                       [
+                               [
+                                       ['message', 'Matthew', 'comment', null],
+                                       ['👎', 'Matthew', 'reaction', 'message#Matthew'],
+                                       ['👎', 'Matthew', 'reaction_deleted', 'message#Matthew'],
+                               ],
+                               ['👎', 'Matthew', 'reaction', 'message#Matthew'],
+                               true,
                        ],
                ];
        }
@@ -1180,18 +1200,9 @@ class ManagerTest extends TestCase {
                $this->skipIfNotSupport4ByteUTF();
                $manager = $this->getManager();
 
-               $buffer = [];
-               foreach ($comments as $comment) {
-                       [$message, $actorId, $verb, $parentText] = $comment;
-                       $parentId = null;
-                       if ($parentText) {
-                               $parentId = (string) $buffer[$parentText]->getId();
-                       }
-                       $comment = $this->testSaveNew($message, $actorId, $verb, $parentId);
-                       if (!$parentId) {
-                               $buffer[$comment->getMessage()] = $comment;
-                       }
-               }
+
+               $processedComments = $this->proccessComments($comments);
+               $comment = end($processedComments);
                $actual = $manager->get($comment->getParentId());
 
                if ($isFullMatch) {
@@ -1207,7 +1218,7 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👍', 'alice', 'reaction', 'message'],
+                                       ['👍', 'alice', 'reaction', 'message#alice'],
                                ],
                                ['👍' => 1],
                                true,
@@ -1215,31 +1226,31 @@ class ManagerTest extends TestCase {
                        [
                                [
                                        ['message', 'alice', 'comment', null],
-                                       ['👎', 'John', 'reaction', 'message'],
-                                       ['💼', 'Luke', 'reaction', 'message'],
-                                       ['📋', 'Luke', 'reaction', 'message'],
-                                       ['🚀', 'Luke', 'reaction', 'message'],
-                                       ['🖤', 'Luke', 'reaction', 'message'],
-                                       ['😜', 'Luke', 'reaction', 'message'],
-                                       ['🌖', 'Luke', 'reaction', 'message'],
-                                       ['💖', 'Luke', 'reaction', 'message'],
-                                       ['📥', 'Luke', 'reaction', 'message'],
-                                       ['🐉', 'Luke', 'reaction', 'message'],
-                                       ['☕', 'Luke', 'reaction', 'message'],
-                                       ['🐄', 'Luke', 'reaction', 'message'],
-                                       ['🐕', 'Luke', 'reaction', 'message'],
-                                       ['🐈', 'Luke', 'reaction', 'message'],
-                                       ['🛂', 'Luke', 'reaction', 'message'],
-                                       ['🕸', 'Luke', 'reaction', 'message'],
-                                       ['🏰', 'Luke', 'reaction', 'message'],
-                                       ['⚙️', 'Luke', 'reaction', 'message'],
-                                       ['🚨', 'Luke', 'reaction', 'message'],
-                                       ['👥', 'Luke', 'reaction', 'message'],
-                                       ['👍', 'Paul', 'reaction', 'message'],
-                                       ['👍', 'Peter', 'reaction', 'message'],
-                                       ['💜', 'Matthew', 'reaction', 'message'],
-                                       ['💜', 'Mark', 'reaction', 'message'],
-                                       ['💜', 'Luke', 'reaction', 'message'],
+                                       ['👎', 'John', 'reaction', 'message#alice'],
+                                       ['💼', 'Luke', 'reaction', 'message#alice'],
+                                       ['📋', 'Luke', 'reaction', 'message#alice'],
+                                       ['🚀', 'Luke', 'reaction', 'message#alice'],
+                                       ['🖤', 'Luke', 'reaction', 'message#alice'],
+                                       ['😜', 'Luke', 'reaction', 'message#alice'],
+                                       ['🌖', 'Luke', 'reaction', 'message#alice'],
+                                       ['💖', 'Luke', 'reaction', 'message#alice'],
+                                       ['📥', 'Luke', 'reaction', 'message#alice'],
+                                       ['🐉', 'Luke', 'reaction', 'message#alice'],
+                                       ['☕', 'Luke', 'reaction', 'message#alice'],
+                                       ['🐄', 'Luke', 'reaction', 'message#alice'],
+                                       ['🐕', 'Luke', 'reaction', 'message#alice'],
+                                       ['🐈', 'Luke', 'reaction', 'message#alice'],
+                                       ['🛂', 'Luke', 'reaction', 'message#alice'],
+                                       ['🕸', 'Luke', 'reaction', 'message#alice'],
+                                       ['🏰', 'Luke', 'reaction', 'message#alice'],
+                                       ['⚙️', 'Luke', 'reaction', 'message#alice'],
+                                       ['🚨', 'Luke', 'reaction', 'message#alice'],
+                                       ['👥', 'Luke', 'reaction', 'message#alice'],
+                                       ['👍', 'Paul', 'reaction', 'message#alice'],
+                                       ['👍', 'Peter', 'reaction', 'message#alice'],
+                                       ['💜', 'Matthew', 'reaction', 'message#alice'],
+                                       ['💜', 'Mark', 'reaction', 'message#alice'],
+                                       ['💜', 'Luke', 'reaction', 'message#alice'],
                                ],
                                [
                                        '💜' => 3,