diff options
author | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-19 09:38:52 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@owncloud.com> | 2016-05-19 09:38:52 +0200 |
commit | 9a4253ef7c34f9dc71a6a9f7828a10df769f0c32 (patch) | |
tree | febe8415af243c7f69867d095a3f281c65071d40 /tests/lib/RepairStepTest.php | |
parent | 55fc6536d33bd044a72437ac61d3c5ade09111cb (diff) | |
download | nextcloud-server-9a4253ef7c34f9dc71a6a9f7828a10df769f0c32.tar.gz nextcloud-server-9a4253ef7c34f9dc71a6a9f7828a10df769f0c32.zip |
Fix lib/
Diffstat (limited to 'tests/lib/RepairStepTest.php')
-rw-r--r-- | tests/lib/RepairStepTest.php | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/tests/lib/RepairStepTest.php b/tests/lib/RepairStepTest.php new file mode 100644 index 00000000000..3f7a0ce064b --- /dev/null +++ b/tests/lib/RepairStepTest.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 RepairStepTest 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 + ); + } +} |