diff options
author | Michael Weimann <mail@michael-weimann.eu> | 2018-07-01 20:56:27 +0200 |
---|---|---|
committer | Michael Weimann <mail@michael-weimann.eu> | 2018-07-01 20:56:27 +0200 |
commit | 9bd48e7c0df3ad0e404f524fa0100697e2bdb84e (patch) | |
tree | 07a8c774a737a32a8865665b69b940ae36099d8c /tests | |
parent | 03a5856541d6b760ab9aaeaf5a30bb40a3c66b70 (diff) | |
download | nextcloud-server-9bd48e7c0df3ad0e404f524fa0100697e2bdb84e.tar.gz nextcloud-server-9bd48e7c0df3ad0e404f524fa0100697e2bdb84e.zip |
Adds an info if the maintenance mode is already enabled/disabled.
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Core/Command/Maintenance/ModeTest.php | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/tests/Core/Command/Maintenance/ModeTest.php b/tests/Core/Command/Maintenance/ModeTest.php new file mode 100644 index 00000000000..da5e95998e9 --- /dev/null +++ b/tests/Core/Command/Maintenance/ModeTest.php @@ -0,0 +1,147 @@ +<?php + +namespace Tests\Core\Command\Maintenance; + +use OC\Core\Command\Maintenance\Mode; +use OCP\IConfig; +use PHPUnit\Framework\MockObject\MockObject; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; +use Test\TestCase; + +/** + * This class provides tests methods for the Mode command. + * + * @package Tests\Core\Command\Maintenance + */ +class ModeTest extends TestCase { + /** + * A config mock passed to the command. + * + * @var IConfig|MockObject + */ + private $config; + + /** + * Holds a Mode command instance with a config mock. + * + * @var Mode + */ + private $mode; + + /** + * An input mock for tests. + * + * @var InputInterface|MockObject + */ + private $input; + + /** + * An output mock for tests. + * + * @var OutputInterface|MockObject + */ + private $output; + + /** + * Setups the test environment. + * + * @return void + */ + protected function setUp() { + parent::setUp(); + $this->config = $this->getMockBuilder(IConfig::class) + ->getMock(); + $this->mode = new Mode($this->config); + $this->input = $this->getMockBuilder(InputInterface::class) + ->getMock(); + $this->output = $this->getMockBuilder(OutputInterface::class) + ->getMock(); + } + + /** + * Provides test data for the execute test. + * + * @return array + */ + public function getExecuteTestData(): array { + return [ + 'off -> on' => [ + 'on', // command option + false, // current maintenance mode state + true, // expected maintenance mode state, null for no change + 'Maintenance mode enabled', // expected output + ], + 'on -> off' => [ + 'off', + true, + false, + 'Maintenance mode disabled', + ], + 'on -> on' => [ + 'on', + true, + null, + 'Maintenance mode already enabled', + ], + 'off -> off' => [ + 'off', + false, + null, + 'Maintenance mode already disabled', + ], + 'no option, maintenance enabled' => [ + '', + true, + null, + 'Maintenance mode is currently enabled', + ], + 'no option, maintenance disabled' => [ + '', + false, + null, + 'Maintenance mode is currently disabled', + ], + ]; + } + + /** + * Asserts that execute works as expected. + * + * @dataProvider getExecuteTestData + * @param string $option The command option. + * @param bool $currentMaintenanceState The current maintenance state. + * @param null|bool $expectedMaintenanceState + * The expected maintenance state. Null for no change. + * @param string $expectedOutput The expected command output. + * @throws \Exception + */ + public function testExecute( + string $option, + bool $currentMaintenanceState, + $expectedMaintenanceState, + string $expectedOutput + ) { + $this->config->expects($this->any()) + ->method('getSystemValue') + ->willReturn($currentMaintenanceState); + + if ($expectedMaintenanceState !== null) { + $this->config->expects($this->once()) + ->method('setSystemValue') + ->with('maintenance', $expectedMaintenanceState); + } + + $this->input->expects($this->any()) + ->method('getOption') + ->willReturnCallback(function ($callOption) use ($option) { + return $callOption === $option; + }); + + $this->output->expects($this->once()) + ->method('writeln') + ->with($expectedOutput); + + $this->mode->run($this->input, $this->output); + } +} |