Skip to content

Commit b63719b

Browse files
marcelklehredward-ly
authored andcommitted
test: Add tests for TaskMapper and TaskService
Signed-off-by: Edward Ly <contact@edward.ly>
1 parent 404bbf1 commit b63719b

File tree

3 files changed

+160
-7
lines changed

3 files changed

+160
-7
lines changed

lib/Service/ContextChat/TaskService.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
class TaskService {
1919
public function __construct(
20-
private TaskMapper $jobMapper,
20+
private TaskMapper $taskMapper,
2121
) {
2222
}
2323

@@ -28,7 +28,7 @@ public function __construct(
2828
* @throws MultipleObjectsReturnedException
2929
*/
3030
public function findNext(): Task {
31-
return $this->jobMapper->findNext();
31+
return $this->taskMapper->findNext();
3232
}
3333

3434
/**
@@ -41,13 +41,13 @@ public function findNext(): Task {
4141
*/
4242
public function updateOrCreate(int $mailboxId, int $lastMessageId): Task {
4343
try {
44-
$entity = $this->jobMapper->findByMailbox($mailboxId);
44+
$entity = $this->taskMapper->findByMailbox($mailboxId);
4545
} catch (DoesNotExistException) {
4646
$entity = new Task();
4747
$entity->setMailboxId($mailboxId);
4848
$entity->setLastMessageId($lastMessageId);
4949

50-
return $this->jobMapper->insert($entity);
50+
return $this->taskMapper->insert($entity);
5151
}
5252

5353
if ($lastMessageId >= $entity->getLastMessageId()) {
@@ -56,7 +56,7 @@ public function updateOrCreate(int $mailboxId, int $lastMessageId): Task {
5656
}
5757

5858
$entity->setLastMessageId($lastMessageId);
59-
return $this->jobMapper->update($entity);
59+
return $this->taskMapper->update($entity);
6060
}
6161

6262
/**
@@ -67,10 +67,10 @@ public function updateOrCreate(int $mailboxId, int $lastMessageId): Task {
6767
*/
6868
public function delete(int $jobId): ?Task {
6969
try {
70-
$entity = $this->jobMapper->findById($jobId);
70+
$entity = $this->taskMapper->findById($jobId);
7171
} catch (DoesNotExistException) {
7272
return null;
7373
}
74-
return $this->jobMapper->delete($entity);
74+
return $this->taskMapper->delete($entity);
7575
}
7676
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\Mail\Tests\Integration\Db;
11+
12+
use ChristophWurst\Nextcloud\Testing\DatabaseTransaction;
13+
use ChristophWurst\Nextcloud\Testing\TestCase;
14+
use OCA\Mail\Db\ContextChat\TaskMapper;
15+
use OCP\DB\QueryBuilder\IQueryBuilder;
16+
use OCP\IDBConnection;
17+
18+
class TaskMapperTest extends TestCase {
19+
use DatabaseTransaction;
20+
21+
/** @var IDBConnection */
22+
private $db;
23+
24+
private TaskMapper $mapper;
25+
26+
protected function setUp(): void {
27+
parent::setUp();
28+
29+
$this->db = \OCP\Server::get(IDBConnection::class);
30+
$this->mapper = new TaskMapper(
31+
$this->db,
32+
);
33+
34+
$qb = $this->db->getQueryBuilder();
35+
36+
$delete = $qb->delete($this->mapper->getTableName());
37+
$delete->executeStatement();
38+
}
39+
40+
private function insert(int $mailboxId, int $lastMessageId): void {
41+
$qb = $this->db->getQueryBuilder();
42+
$insert = $qb->insert($this->mapper->getTableName())
43+
->values([
44+
'mailbox_id' => $qb->createNamedParameter($mailboxId, IQueryBuilder::PARAM_INT),
45+
'last_message_id' => $qb->createNamedParameter($lastMessageId, IQueryBuilder::PARAM_INT),
46+
]);
47+
$insert->executeStatement();
48+
}
49+
50+
public function testFindNext() : void {
51+
$this->insert(1, 1);
52+
$this->insert(2, 2);
53+
$this->insert(3, 3);
54+
$task = $this->mapper->findNext();
55+
$this->assertEquals(1, $task->getMailboxId());
56+
$this->assertEquals(1, $task->getLastMessageId());
57+
}
58+
59+
public function testFindByMailbox() : void {
60+
$this->insert(1, 1);
61+
$this->insert(2, 2);
62+
$this->insert(3, 3);
63+
$task = $this->mapper->findByMailbox(2);
64+
$this->assertEquals(2, $task->getMailboxId());
65+
$this->assertEquals(2, $task->getLastMessageId());
66+
}
67+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
<?php
2+
3+
/**
4+
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
5+
* SPDX-License-Identifier: AGPL-3.0-only
6+
*/
7+
8+
namespace OCA\Mail\Tests\Integration\Service;
9+
10+
use OCA\Mail\Db\ContextChat\TaskMapper;
11+
use OCA\Mail\Service\ContextChat\TaskService;
12+
use OCA\Mail\Tests\Integration\TestCase;
13+
use OCP\DB\QueryBuilder\IQueryBuilder;
14+
use OCP\IDBConnection;
15+
16+
class TaskServiceTest extends TestCase {
17+
18+
private IDBConnection $db;
19+
20+
/** @var TaskMapper */
21+
private $mapper;
22+
23+
/** @var TaskService */
24+
private $service;
25+
26+
protected function setUp(): void {
27+
parent::setUp();
28+
29+
$this->db = \OCP\Server::get(IDBConnection::class);
30+
$this->mapper = new TaskMapper(
31+
$this->db
32+
);
33+
$this->service = new TaskService(
34+
$this->mapper
35+
);
36+
37+
$qb = $this->db->getQueryBuilder();
38+
39+
$delete = $qb->delete($this->mapper->getTableName());
40+
$delete->executeStatement();
41+
}
42+
43+
private function insert(int $mailboxId, int $lastMessageId): void {
44+
$qb = $this->db->getQueryBuilder();
45+
$insert = $qb->insert($this->mapper->getTableName())
46+
->values([
47+
'mailbox_id' => $qb->createNamedParameter($mailboxId, IQueryBuilder::PARAM_INT),
48+
'last_message_id' => $qb->createNamedParameter($lastMessageId, IQueryBuilder::PARAM_INT),
49+
]);
50+
$insert->executeStatement();
51+
}
52+
53+
public function testFindNext() : void {
54+
$this->insert(1, 1);
55+
$this->insert(2, 2);
56+
$this->insert(3, 3);
57+
$task = $this->service->findNext();
58+
$this->assertEquals(1, $task->getMailboxId());
59+
$this->assertEquals(1, $task->getLastMessageId());
60+
}
61+
62+
public function testUpdateOrCreateWithUpdateToEarlierMessage() : void {
63+
$this->insert(2, 2);
64+
$this->insert(3, 3);
65+
$this->service->updateOrCreate(2, 1);
66+
$task = $this->service->findNext();
67+
$this->assertEquals(2, $task->getMailboxId());
68+
$this->assertEquals(1, $task->getLastMessageId());
69+
}
70+
71+
public function testUpdateOrCreateWithUpdateToLaterMessage() : void {
72+
$this->insert(2, 2);
73+
$this->insert(3, 3);
74+
$this->service->updateOrCreate(2, 3); // will be noop because 3 is later than 2
75+
$task = $this->service->findNext();
76+
$this->assertEquals(2, $task->getMailboxId());
77+
$this->assertEquals(2, $task->getLastMessageId());
78+
}
79+
80+
public function testUpdateOrCreateNoUpdate() : void {
81+
$this->service->updateOrCreate(2, 3);
82+
$task = $this->service->findNext();
83+
$this->assertEquals(2, $task->getMailboxId());
84+
$this->assertEquals(3, $task->getLastMessageId());
85+
}
86+
}

0 commit comments

Comments
 (0)