diff options
Diffstat (limited to 'tests/lib/BackgroundJob/TimedJobTest.php')
-rw-r--r-- | tests/lib/BackgroundJob/TimedJobTest.php | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/lib/BackgroundJob/TimedJobTest.php b/tests/lib/BackgroundJob/TimedJobTest.php new file mode 100644 index 00000000000..d56240eb75e --- /dev/null +++ b/tests/lib/BackgroundJob/TimedJobTest.php @@ -0,0 +1,57 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test\BackgroundJob; + +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Server; + +class TimedJobTest extends \Test\TestCase { + private DummyJobList $jobList; + private ITimeFactory $time; + + protected function setUp(): void { + parent::setUp(); + + $this->jobList = new DummyJobList(); + $this->time = Server::get(ITimeFactory::class); + } + + public function testShouldRunAfterIntervalNew(): void { + $job = new TestTimedJobNew($this->time); + $job->setId(42); + $this->jobList->add($job); + + $job->setLastRun(time() - 12); + $job->start($this->jobList); + $this->assertTrue($job->ran); + } + + public function testShouldNotRunWithinIntervalNew(): void { + $job = new TestTimedJobNew($this->time); + $job->setId(42); + $this->jobList->add($job); + + $job->setLastRun(time() - 5); + $job->start($this->jobList); + $this->assertFalse($job->ran); + } + + public function testShouldNotTwiceNew(): void { + $job = new TestTimedJobNew($this->time); + $job->setId(42); + $this->jobList->add($job); + + $job->setLastRun(time() - 15); + $job->start($this->jobList); + $this->assertTrue($job->ran); + $job->ran = false; + $job->start($this->jobList); + $this->assertFalse($job->ran); + } +} |