Files
provider_imap/tests/php/Unit/MailboxTest.php
T
2026-09-25 12:00:20 -04:00

51 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace KTXT\ProviderImap\Tests\Unit;
use KTXM\ProviderImap\Client\Mailbox;
use KTXM\ProviderImap\Client\Result\MailboxStatusResult;
use PHPUnit\Framework\TestCase;
final class MailboxTest extends TestCase
{
public function testPartialStatusPreservesUnreportedValues(): void
{
$mailbox = new Mailbox('INBOX', '/', [], 12, 4, 123);
$updated = $mailbox->fromStatus(new MailboxStatusResult('INBOX', ['UNSEEN' => 2]));
$this->assertSame(12, $updated->messages());
$this->assertSame(2, $updated->unread());
$this->assertSame(123, $updated->uidValidity());
$this->assertSame(4, $mailbox->unread());
}
public function testExplicitZeroCountsReplaceKnownCounts(): void
{
$mailbox = new Mailbox('INBOX', '/', [], 12, 4, 123);
$updated = $mailbox->fromStatus(new MailboxStatusResult('INBOX', [
'MESSAGES' => 0,
'UNSEEN' => 0,
'UIDVALIDITY' => 456,
]));
$this->assertSame(0, $updated->messages());
$this->assertSame(0, $updated->unread());
$this->assertSame(456, $updated->uidValidity());
}
public function testEmptyStatusPreservesMailboxIncludingUnknownUidValidity(): void
{
foreach ([null, 123] as $uidValidity) {
$mailbox = new Mailbox('INBOX', '/', ['\\HasNoChildren'], 12, 4, $uidValidity, 2, ['\\Seen'], false);
$updated = $mailbox->fromStatus(new MailboxStatusResult('INBOX', []));
$this->assertEquals($mailbox, $updated);
}
}
}