mirror of
https://github.com/nextcloud/server.git
synced 2026-04-15 22:11:17 -04:00
Add unit tests
Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
parent
afe5b6dd8a
commit
425b5cf081
1 changed files with 261 additions and 4 deletions
|
|
@ -32,6 +32,8 @@ class ManagerTest extends TestCase {
|
|||
|
||||
$sql = $this->connection->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*comments`');
|
||||
$this->connection->prepare($sql)->execute();
|
||||
$sql = $this->connection->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*reactions`');
|
||||
$this->connection->prepare($sql)->execute();
|
||||
}
|
||||
|
||||
protected function addDatabaseEntry($parentId, $topmostParentId, $creationDT = null, $latestChildDT = null, $objectId = null) {
|
||||
|
|
@ -469,14 +471,20 @@ class ManagerTest extends TestCase {
|
|||
$manager->get($id);
|
||||
}
|
||||
|
||||
public function testSaveNew() {
|
||||
/**
|
||||
* @dataProvider providerTestSaveNew
|
||||
*/
|
||||
public function testSaveNew(string $message, string $actorId, string $verb, ?string $parentId): IComment {
|
||||
$manager = $this->getManager();
|
||||
$comment = new Comment();
|
||||
$comment
|
||||
->setActor('users', 'alice')
|
||||
->setActor('users', $actorId)
|
||||
->setObject('files', 'file64')
|
||||
->setMessage('very beautiful, I am impressed!')
|
||||
->setVerb('comment');
|
||||
->setMessage($message)
|
||||
->setVerb($verb);
|
||||
if ($parentId) {
|
||||
$comment->setParentId($parentId);
|
||||
}
|
||||
|
||||
$saveSuccessful = $manager->save($comment);
|
||||
$this->assertTrue($saveSuccessful);
|
||||
|
|
@ -487,6 +495,13 @@ class ManagerTest extends TestCase {
|
|||
$loadedComment = $manager->get($comment->getId());
|
||||
$this->assertSame($comment->getMessage(), $loadedComment->getMessage());
|
||||
$this->assertEquals($comment->getCreationDateTime()->getTimestamp(), $loadedComment->getCreationDateTime()->getTimestamp());
|
||||
return $comment;
|
||||
}
|
||||
|
||||
public function providerTestSaveNew(): array {
|
||||
return [
|
||||
['very beautiful, I am impressed!', 'alice', 'comment', null]
|
||||
];
|
||||
}
|
||||
|
||||
public function testSaveUpdate() {
|
||||
|
|
@ -859,6 +874,78 @@ class ManagerTest extends TestCase {
|
|||
$this->assertTrue(is_string($manager->resolveDisplayName('planet', 'neptune')));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestReactionAddAndDelete
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testReactionAddAndDelete(array $comments, array $reactionsExpected) {
|
||||
$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);
|
||||
if ($comment->getParentId()) {
|
||||
$parent = $manager->get($comment->getParentId());
|
||||
$this->assertEqualsCanonicalizing($reactionsExpected, $parent->getReactions());
|
||||
}
|
||||
}
|
||||
|
||||
public function providerTestReactionAddAndDelete(): array {
|
||||
return[
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
], [],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
], ['👍' => 1],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
], ['👍' => 1],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
], ['👍' => 2],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction_deleted', 'message'],
|
||||
], ['👍' => 1],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
['👍', 'alice', 'reaction_deleted', 'message'],
|
||||
['👍', 'frank', 'reaction_deleted', 'message'],
|
||||
], [],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
public function testResolveDisplayNameInvalidType() {
|
||||
$this->expectException(\InvalidArgumentException::class);
|
||||
|
|
@ -872,4 +959,174 @@ class ManagerTest extends TestCase {
|
|||
$manager->registerDisplayNameResolver('planet', $planetClosure);
|
||||
$this->assertTrue(is_string($manager->resolveDisplayName(1337, 'neptune')));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestRetrieveAllReactions
|
||||
*/
|
||||
public function testRetrieveAllReactions(array $comments, array $expected) {
|
||||
$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->retrieveAllReactions($buffer['message']->getId());
|
||||
$actual = array_map(function ($row) {
|
||||
return [
|
||||
'message' => $row->getMessage(),
|
||||
'actorId' => $row->getActorId(),
|
||||
];
|
||||
}, $all);
|
||||
$this->assertEqualsCanonicalizing($expected, $actual);
|
||||
}
|
||||
|
||||
public function providerTestRetrieveAllReactions(): array {
|
||||
return [
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
],
|
||||
[],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
],
|
||||
[
|
||||
['👍', 'alice'],
|
||||
['👍', 'frank'],
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
],
|
||||
[
|
||||
['👍', 'alice'],
|
||||
['👍', 'frank'],
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestRetrieveAllReactionsWithSpecificReaction
|
||||
*/
|
||||
public function testRetrieveAllReactionsWithSpecificReaction(array $comments, string $reaction, array $expected) {
|
||||
$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);
|
||||
$actual = array_map(function ($row) {
|
||||
return [
|
||||
'message' => $row->getMessage(),
|
||||
'actorId' => $row->getActorId(),
|
||||
];
|
||||
}, $all);
|
||||
$this->assertEqualsCanonicalizing($expected, $actual);
|
||||
}
|
||||
|
||||
public function providerTestRetrieveAllReactionsWithSpecificReaction(): array {
|
||||
return [
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
],
|
||||
'👎',
|
||||
[],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
],
|
||||
'👍',
|
||||
[
|
||||
['👍', 'alice'],
|
||||
['👍', 'frank'],
|
||||
],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
['👎', 'alice', 'reaction', 'message'],
|
||||
['👍', 'frank', 'reaction', 'message'],
|
||||
],
|
||||
'👎',
|
||||
[
|
||||
['👎', 'alice'],
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider providerTestGetReactionComment
|
||||
*/
|
||||
public function testGetReactionComment(array $comments, $expected) {
|
||||
$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;
|
||||
}
|
||||
}
|
||||
$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());
|
||||
}
|
||||
|
||||
public function providerTestGetReactionComment(): array {
|
||||
return [
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
],
|
||||
['👍', 'alice', 'reaction', 'message'],
|
||||
],
|
||||
[
|
||||
[
|
||||
['message', 'alice', 'comment', null],
|
||||
['👎', 'alice', 'reaction', 'message'],
|
||||
],
|
||||
['👎', 'alice', 'reaction', 'message'],
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue