generated from Nodarx/template
feat: track cache changes with sequence numbers and tombstones
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -7,6 +7,7 @@ namespace KTXT\ProviderImap\Tests\Unit;
|
||||
use KTXM\ProviderImap\Providers\EntityResource;
|
||||
use KTXM\ProviderImap\Providers\MessageProperties;
|
||||
use KTXM\ProviderImap\Service\Cache\MessageIngestor;
|
||||
use KTXM\ProviderImap\Stores\MailboxStore;
|
||||
use KTXM\ProviderImap\Stores\MessageFileStore;
|
||||
use KTXM\ProviderImap\Stores\MessageStore;
|
||||
use PHPUnit\Framework\TestCase;
|
||||
@@ -26,20 +27,22 @@ final class MessageIngestorTest extends TestCase
|
||||
);
|
||||
$messageStore = $this->createStub(MessageStore::class);
|
||||
$messageStore->method('upsert')->willReturnCallback(
|
||||
function (string $tid, string $sid, int $uidValidity, EntityResource $entity) use (&$calls): void {
|
||||
$calls[] = ['meta', $tid, $sid, $entity->collection(), $uidValidity, $entity->identifier()];
|
||||
function (string $tid, string $sid, int $uidValidity, EntityResource $entity, int $seq) use (&$calls): void {
|
||||
$calls[] = ['meta', $tid, $sid, $entity->collection(), $uidValidity, $entity->identifier(), $seq];
|
||||
},
|
||||
);
|
||||
$mailboxStore = $this->createStub(MailboxStore::class);
|
||||
$mailboxStore->method('reserveSequence')->willReturn(10);
|
||||
|
||||
$ingested = (new MessageIngestor($fileStore, $messageStore))
|
||||
$ingested = (new MessageIngestor($fileStore, $messageStore, $mailboxStore))
|
||||
->ingest('tenant', 'svc', 7, $this->entity(41), $this->entity(42));
|
||||
|
||||
$this->assertSame([41, 42], $ingested);
|
||||
$this->assertSame([
|
||||
['file', 'tenant', 'svc', 'INBOX', 7, 41, EntityResource::CACHE_SCHEMA_VERSION],
|
||||
['meta', 'tenant', 'svc', 'INBOX', 7, 41],
|
||||
['meta', 'tenant', 'svc', 'INBOX', 7, 41, 10],
|
||||
['file', 'tenant', 'svc', 'INBOX', 7, 42, EntityResource::CACHE_SCHEMA_VERSION],
|
||||
['meta', 'tenant', 'svc', 'INBOX', 7, 42],
|
||||
['meta', 'tenant', 'svc', 'INBOX', 7, 42, 11],
|
||||
], $calls);
|
||||
}
|
||||
|
||||
@@ -51,7 +54,7 @@ final class MessageIngestorTest extends TestCase
|
||||
$messageStore->expects($this->never())->method('upsert');
|
||||
|
||||
$this->expectException(RuntimeException::class);
|
||||
(new MessageIngestor($fileStore, $messageStore))->ingest('tenant', 'svc', 7, $this->entity(41));
|
||||
(new MessageIngestor($fileStore, $messageStore, $this->createStub(MailboxStore::class)))->ingest('tenant', 'svc', 7, $this->entity(41));
|
||||
}
|
||||
|
||||
private function entity(int $uid): EntityResource
|
||||
|
||||
Reference in New Issue
Block a user