aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/BackgroundJob/TimedJobTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/BackgroundJob/TimedJobTest.php')
-rw-r--r--tests/lib/BackgroundJob/TimedJobTest.php57
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);
+ }
+}