. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Services; use Fisharebest\Webtrees\Contracts\TimeFactoryInterface; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\TestCase; use PHPUnit\Framework\Attributes\CoversClass; #[CoversClass(TimeoutService::class)] class TimeoutServiceTest extends TestCase { public function testNoTimeOut(): void { $php_service = self::createStub(PhpService::class); $php_service->method('maxExecutionTime')->willReturn(0); $now = 1500000000.0; $timeout_service = new TimeoutService($php_service, $now); self::assertFalse($timeout_service->isTimeNearlyUp()); } public function testTimeOutReached(): void { $php_service = self::createStub(PhpService::class); $php_service->method('maxExecutionTime')->willReturn(30); $now = 1500000000.0; $timeout_service = new TimeoutService($php_service, $now); $time_factory = self::createStub(TimeFactoryInterface::class); $time_factory->method('now')->willReturn($now + 60.0); Registry::timeFactory($time_factory); self::assertTrue($timeout_service->isTimeNearlyUp()); } public function testTimeOutNotReached(): void { $php_service = self::createStub(PhpService::class); $php_service->method('maxExecutionTime')->willReturn(30); $now = Registry::timeFactory()->now(); $timeout_service = new TimeoutService($php_service, $now); $time_factory = self::createStub(TimeFactoryInterface::class); $time_factory->method('now')->willReturn($now + 10.0); Registry::timeFactory($time_factory); self::assertFalse($timeout_service->isTimeNearlyUp()); } public function testTimeLimitNotReached(): void { $now = Registry::timeFactory()->now(); $timeout_service = new TimeoutService(new PhpService(), $now); $time_factory = self::createStub(TimeFactoryInterface::class); $time_factory->method('now')->willReturn($now + 1.4); Registry::timeFactory($time_factory); self::assertFalse($timeout_service->isTimeLimitUp()); } public function testTimeLimitReached(): void { $now = Registry::timeFactory()->now(); $timeout_service = new TimeoutService(new PhpService(), $now); $time_factory = self::createStub(TimeFactoryInterface::class); $time_factory->method('now')->willReturn($now + 1.6); Registry::timeFactory($time_factory); self::assertTrue($timeout_service->isTimeLimitUp()); } }