54 lines
1.5 KiB
PHP
54 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace sammo;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
final class AutoResetProgressTest extends TestCase
|
|
{
|
|
public function testRecordStoresInjectedWallTimeWithMicroseconds(): void
|
|
{
|
|
$storage = $this->createMock(KVStorage::class);
|
|
$storage->expects(self::once())
|
|
->method('setValue')
|
|
->with(
|
|
AutoResetProgress::STORAGE_KEY,
|
|
'2026-08-12 15:40:12.345678',
|
|
)
|
|
->willReturnSelf();
|
|
|
|
AutoResetProgress::record(
|
|
$storage,
|
|
new \DateTimeImmutable('2026-08-12 15:40:12.345678 UTC'),
|
|
);
|
|
}
|
|
|
|
public function testRecordIfAdvancedIgnoresEqualOrRegressiveTicks(): void
|
|
{
|
|
$storage = $this->createMock(KVStorage::class);
|
|
$storage->expects(self::never())->method('setValue');
|
|
|
|
self::assertFalse(AutoResetProgress::recordIfAdvanced($storage, 100, 100));
|
|
self::assertFalse(AutoResetProgress::recordIfAdvanced($storage, 100, 99));
|
|
}
|
|
|
|
public function testRecordIfAdvancedRefreshesTheWatchdogAnchor(): void
|
|
{
|
|
$storage = $this->createMock(KVStorage::class);
|
|
$storage->expects(self::once())
|
|
->method('setValue')
|
|
->with(
|
|
AutoResetProgress::STORAGE_KEY,
|
|
'2026-08-12 15:41:00.000001',
|
|
)
|
|
->willReturnSelf();
|
|
|
|
self::assertTrue(AutoResetProgress::recordIfAdvanced(
|
|
$storage,
|
|
100,
|
|
101,
|
|
new \DateTimeImmutable('2026-08-12 15:41:00.000001 UTC'),
|
|
));
|
|
}
|
|
}
|