11<?php
2+
3+ declare (strict_types=1 );
4+
25/**
36 * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
47 * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
@@ -153,7 +156,11 @@ public function testHasDifferentArgument($argument): void {
153156 $ this ->assertFalse ($ this ->instance ->has ($ job , 10 ));
154157 }
155158
156- protected function createTempJob ($ class , $ argument , $ reservedTime = 0 , $ lastChecked = 0 ) {
159+ protected function createTempJob ($ class ,
160+ $ argument ,
161+ int $ reservedTime = 0 ,
162+ int $ lastChecked = 0 ,
163+ int $ lastRun = 0 ): int {
157164 if ($ lastChecked === 0 ) {
158165 $ lastChecked = time ();
159166 }
@@ -163,11 +170,12 @@ protected function createTempJob($class, $argument, $reservedTime = 0, $lastChec
163170 ->values ([
164171 'class ' => $ query ->createNamedParameter ($ class ),
165172 'argument ' => $ query ->createNamedParameter ($ argument ),
166- 'last_run ' => $ query ->createNamedParameter (0 , IQueryBuilder::PARAM_INT ),
173+ 'last_run ' => $ query ->createNamedParameter ($ lastRun , IQueryBuilder::PARAM_INT ),
167174 'last_checked ' => $ query ->createNamedParameter ($ lastChecked , IQueryBuilder::PARAM_INT ),
168175 'reserved_at ' => $ query ->createNamedParameter ($ reservedTime , IQueryBuilder::PARAM_INT ),
169176 ]);
170- $ query ->execute ();
177+ $ query ->executeStatement ();
178+ return $ query ->getLastInsertId ();
171179 }
172180
173181 public function testGetNext (): void {
@@ -200,6 +208,21 @@ public function testGetNextSkipReserved(): void {
200208 $ this ->assertEquals (2 , $ nextJob ->getArgument ());
201209 }
202210
211+ public function testGetNextSkipTimed (): void {
212+ $ job = new TestTimedJobNew ($ this ->timeFactory );
213+ $ jobId = $ this ->createTempJob (get_class ($ job ), 1 , 123456789 , 12345 , 123456789 - 5 );
214+ $ this ->timeFactory ->expects (self ::atLeastOnce ())
215+ ->method ('getTime ' )
216+ ->willReturn (123456789 );
217+
218+ $ nextJob = $ this ->instance ->getNext ();
219+
220+ self ::assertNull ($ nextJob );
221+ $ job = $ this ->instance ->getById ($ jobId );
222+ self ::assertInstanceOf (TestTimedJobNew::class, $ job );
223+ self ::assertEquals (123456789 - 5 , $ job ->getLastRun ());
224+ }
225+
203226 public function testGetNextSkipNonExisting (): void {
204227 $ job = new TestJob ();
205228 $ this ->createTempJob ('\OC\Non\Existing\Class ' , 1 , 0 , 12345 );
0 commit comments