diff options
author | Vincent Petry <pvince81@owncloud.com> | 2016-04-29 13:47:15 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2016-04-29 13:47:15 +0200 |
commit | 6571da1519b76dce45b6a9c0b88aefd548251625 (patch) | |
tree | 32c1ea4492b96b90482194422cb710e0f945bcc4 /tests/lib/RepairTest.php | |
parent | 5b45f0f91448f109ff33d4fb03368a0405e1da10 (diff) | |
parent | 7ad1d491f488a5c949e9c8b146d243cdd72e4d38 (diff) | |
download | nextcloud-server-6571da1519b76dce45b6a9c0b88aefd548251625.tar.gz nextcloud-server-6571da1519b76dce45b6a9c0b88aefd548251625.zip |
Merge pull request #24305 from owncloud/update-show-repair-step-progress
[Update] show repair step progress ...
Diffstat (limited to 'tests/lib/RepairTest.php')
-rw-r--r-- | tests/lib/RepairTest.php | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/tests/lib/RepairTest.php b/tests/lib/RepairTest.php new file mode 100644 index 00000000000..9ae1318eb32 --- /dev/null +++ b/tests/lib/RepairTest.php @@ -0,0 +1,134 @@ +<?php +/** + * Copyright (c) 2014 Vincent Petry <pvince81@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test; + +use OCP\Migration\IRepairStep; +use Symfony\Component\EventDispatcher\EventDispatcher; + +class TestRepairStep implements IRepairStep { + private $warning; + + public function __construct($warning = false) { + $this->warning = $warning; + } + + public function getName() { + return 'Test Name'; + } + + public function run(\OCP\Migration\IOutput $out) { + if ($this->warning) { + $out->warning('Simulated warning'); + } + else { + $out->info('Simulated info'); + } + } +} + +class RepairTest extends TestCase { + /** @var \OC\Repair */ + private $repair; + + /** @var string[] */ + private $outputArray; + + public function setUp() { + parent::setUp(); + $dispatcher = new EventDispatcher(); + $this->repair = new \OC\Repair([], $dispatcher); + + $dispatcher->addListener('\OC\Repair::warning', function ($event) { + /** @var \Symfony\Component\EventDispatcher\GenericEvent $event */ + $this->outputArray[] = 'warning: ' . $event->getArgument(0); + }); + $dispatcher->addListener('\OC\Repair::info', function ($event) { + /** @var \Symfony\Component\EventDispatcher\GenericEvent $event */ + $this->outputArray[] = 'info: ' . $event->getArgument(0); + }); + $dispatcher->addListener('\OC\Repair::step', function ($event) { + /** @var \Symfony\Component\EventDispatcher\GenericEvent $event */ + $this->outputArray[] = 'step: ' . $event->getArgument(0); + }); + } + + public function testRunRepairStep() { + + $this->repair->addStep(new TestRepairStep(false)); + $this->repair->run(); + + $this->assertEquals( + array( + 'step: Test Name', + 'info: Simulated info', + ), + $this->outputArray + ); + } + + public function testRunRepairStepThatFail() { + + $this->repair->addStep(new TestRepairStep(true)); + $this->repair->run(); + + $this->assertEquals( + array( + 'step: Test Name', + 'warning: Simulated warning', + ), + $this->outputArray + ); + } + + public function testRunRepairStepsWithException() { + $mock = $this->getMock('\Test\TestRepairStep'); + $mock->expects($this->any()) + ->method('run') + ->will($this->throwException(new \Exception())); + $mock->expects($this->any()) + ->method('getName') + ->will($this->returnValue('Exception Test')); + + $this->repair->addStep($mock); + $this->repair->addStep(new TestRepairStep(false)); + + $thrown = false; + try { + $this->repair->run(); + } + catch (\Exception $e) { + $thrown = true; + } + + $this->assertTrue($thrown); + // jump out after exception + $this->assertEquals( + array( + 'step: Exception Test', + ), + $this->outputArray + ); + } + + public function testRunRepairStepsContinueAfterWarning() { + $this->repair->addStep(new TestRepairStep(true)); + $this->repair->addStep(new TestRepairStep(false)); + $this->repair->run(); + + $this->assertEquals( + array( + 'step: Test Name', + 'warning: Simulated warning', + 'step: Test Name', + 'info: Simulated info', + ), + $this->outputArray + ); + } +} |