Browse Source

Refactor and fixes on tests

Signed-off-by: Vitor Mattos <vitor@php.rio>
Vitor Mattos 2 years ago
parent
commit
7bb01b6ccc
1 changed files with 135 additions and 124 deletions
  1. 135 124
      tests/lib/Comments/ManagerTest.php

+ 135 - 124
tests/lib/Comments/ManagerTest.php

@@ -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,