Dont use exceptions for the backgroundjob test cases

This commit is contained in:
Robin Appelman 2013-12-04 16:28:27 +01:00
parent 4f4ad72460
commit 3fa11bd426
2 changed files with 46 additions and 35 deletions

View File

@ -9,8 +9,17 @@
namespace Test\BackgroundJob; namespace Test\BackgroundJob;
class TestQueuedJob extends \OC\BackgroundJob\QueuedJob { class TestQueuedJob extends \OC\BackgroundJob\QueuedJob {
private $testCase;
/**
* @param QueuedJob $testCase
*/
public function __construct($testCase) {
$this->testCase = $testCase;
}
public function run($argument) { public function run($argument) {
throw new JobRun(); //throw an exception so we can detect if this function is called $this->testCase->markRun();
} }
} }
@ -24,19 +33,22 @@ class QueuedJob extends \PHPUnit_Framework_TestCase {
*/ */
private $job; private $job;
private $jobRun = false;
public function markRun() {
$this->jobRun = true;
}
public function setup() { public function setup() {
$this->jobList = new DummyJobList(); $this->jobList = new DummyJobList();
$this->job = new TestQueuedJob(); $this->job = new TestQueuedJob($this);
$this->jobList->add($this->job); $this->jobList->add($this->job);
$this->jobRun = false;
} }
public function testJobShouldBeRemoved() { public function testJobShouldBeRemoved() {
try { $this->assertTrue($this->jobList->has($this->job, null));
$this->assertTrue($this->jobList->has($this->job, null)); $this->job->execute($this->jobList);
$this->job->execute($this->jobList); $this->assertTrue($this->jobRun);
$this->fail("job should have been run");
} catch (JobRun $e) {
$this->assertFalse($this->jobList->has($this->job, null));
}
} }
} }

View File

@ -9,12 +9,18 @@
namespace Test\BackgroundJob; namespace Test\BackgroundJob;
class TestTimedJob extends \OC\BackgroundJob\TimedJob { class TestTimedJob extends \OC\BackgroundJob\TimedJob {
public function __construct() { private $testCase;
/**
* @param TimedJob $testCase
*/
public function __construct($testCase) {
$this->setInterval(10); $this->setInterval(10);
$this->testCase = $testCase;
} }
public function run($argument) { public function run($argument) {
throw new JobRun(); //throw an exception so we can detect if this function is called $this->testCase->markRun();
} }
} }
@ -28,44 +34,37 @@ class TimedJob extends \PHPUnit_Framework_TestCase {
*/ */
private $job; private $job;
private $jobRun = false;
public function markRun() {
$this->jobRun = true;
}
public function setup() { public function setup() {
$this->jobList = new DummyJobList(); $this->jobList = new DummyJobList();
$this->job = new TestTimedJob(); $this->job = new TestTimedJob($this);
$this->jobList->add($this->job); $this->jobList->add($this->job);
$this->jobRun = false;
} }
public function testShouldRunAfterInterval() { public function testShouldRunAfterInterval() {
$this->job->setLastRun(time() - 12); $this->job->setLastRun(time() - 12);
try { $this->job->execute($this->jobList);
$this->job->execute($this->jobList); $this->assertTrue($this->jobRun);
$this->fail("job should have run");
} catch (JobRun $e) {
}
$this->assertTrue(true);
} }
public function testShouldNotRunWithinInterval() { public function testShouldNotRunWithinInterval() {
$this->job->setLastRun(time() - 5); $this->job->setLastRun(time() - 5);
try { $this->job->execute($this->jobList);
$this->job->execute($this->jobList); $this->assertFalse($this->jobRun);
} catch (JobRun $e) {
$this->fail("job should not have run");
}
$this->assertTrue(true);
} }
public function testShouldNotTwice() { public function testShouldNotTwice() {
$this->job->setLastRun(time() - 15); $this->job->setLastRun(time() - 15);
try { $this->job->execute($this->jobList);
$this->job->execute($this->jobList); $this->assertTrue($this->jobRun);
$this->fail("job should have run the first time"); $this->jobRun = false;
} catch (JobRun $e) { $this->job->execute($this->jobList);
try { $this->assertFalse($this->jobRun);
$this->job->execute($this->jobList);
} catch (JobRun $e) {
$this->fail("job should not have run the second time");
}
}
$this->assertTrue(true);
} }
} }