From 2ff1bdaba3292cc5baff71d8d79674bbf0b69fc8 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 5 Dec 2013 13:29:35 +0100 Subject: [PATCH] add test case for removing background jobs that are throwing exceptions --- tests/lib/backgroundjob/dummyjoblist.php | 3 -- tests/lib/backgroundjob/job.php | 59 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 tests/lib/backgroundjob/job.php diff --git a/tests/lib/backgroundjob/dummyjoblist.php b/tests/lib/backgroundjob/dummyjoblist.php index d91d6b344b..e1579c273b 100644 --- a/tests/lib/backgroundjob/dummyjoblist.php +++ b/tests/lib/backgroundjob/dummyjoblist.php @@ -8,9 +8,6 @@ namespace Test\BackgroundJob; -class JobRun extends \Exception { -} - /** * Class DummyJobList * diff --git a/tests/lib/backgroundjob/job.php b/tests/lib/backgroundjob/job.php new file mode 100644 index 0000000000..7d66fa772d --- /dev/null +++ b/tests/lib/backgroundjob/job.php @@ -0,0 +1,59 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\BackgroundJob; + + +class TestJob extends \OC\BackgroundJob\Job { + private $testCase; + + /** + * @var callable $callback + */ + private $callback; + + /** + * @param Job $testCase + * @param callable $callback + */ + public function __construct($testCase, $callback) { + $this->testCase = $testCase; + $this->callback = $callback; + } + + public function run($argument) { + $this->testCase->markRun(); + $callback = $this->callback; + $callback($argument); + } +} + +class Job extends \PHPUnit_Framework_TestCase { + private $run = false; + + public function setUp() { + $this->run = false; + } + + public function testRemoveAfterException() { + $jobList = new DummyJobList(); + $job = new TestJob($this, function () { + throw new \Exception(); + }); + $jobList->add($job); + + $this->assertCount(1, $jobList->getAll()); + $job->execute($jobList); + $this->assertTrue($this->run); + $this->assertCount(0, $jobList->getAll()); + } + + public function markRun() { + $this->run = true; + } +}