diff options
Diffstat (limited to 'tests/lib/Command/BackgroundModeTest.php')
-rw-r--r-- | tests/lib/Command/BackgroundModeTest.php | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tests/lib/Command/BackgroundModeTest.php b/tests/lib/Command/BackgroundModeTest.php new file mode 100644 index 00000000000..ab036ef87ee --- /dev/null +++ b/tests/lib/Command/BackgroundModeTest.php @@ -0,0 +1,60 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016-2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2015 Christian Kampka <christian@kampka.net> + * SPDX-License-Identifier: MIT + */ +namespace Test\Command; + +use OC\Core\Command\Background\Mode; +use OCP\IAppConfig; +use Symfony\Component\Console\Input\InputArgument; +use Symfony\Component\Console\Input\InputDefinition; +use Symfony\Component\Console\Tester\CommandTester; +use Test\TestCase; + +/** + * @group DB + */ +class BackgroundModeTest extends TestCase { + private IAppConfig $appConfig; + + private Mode $command; + + public function setUp(): void { + $this->appConfig = $this->createMock(IAppConfig::class); + + $inputDefinition = new InputDefinition([ + new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), + ]); + + $this->command = new Mode($this->appConfig); + $this->command->setDefinition($inputDefinition); + } + + #[\PHPUnit\Framework\Attributes\DataProvider('dataModeCommand')] + public function testModeCommand(string $mode): void { + $this->appConfig->expects($this->once()) + ->method('setValueString') + ->with('core', 'backgroundjobs_mode', $mode); + + $commandTester = new CommandTester($this->command); + $commandTester->execute(['command' => 'background:' . $mode]); + + $commandTester->assertCommandIsSuccessful(); + + $output = $commandTester->getDisplay(); + $this->assertStringContainsString($mode, $output); + } + + public static function dataModeCommand(): array { + return [ + 'ajax' => ['ajax'], + 'cron' => ['cron'], + 'webcron' => ['webcron'], + ]; + } +} |