123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- <?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->createMock(TestRepairStep::class);
- $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
- );
- }
- }
|