<?php
+/**
+ * @copyright Copyright (C) 2010-2023, the Friendica project
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
namespace Friendica\Test\src\Console;
+use Friendica\App;
use Friendica\App\Mode;
use Friendica\Console\Config;
+use Friendica\Core\Config\Capability\IManageConfigValues;
+use Mockery;
+use Mockery\LegacyMockInterface;
+use Mockery\MockInterface;
-/**
- * @runTestsInSeparateProcesses
- * @preserveGlobalState disabled
- * @requires PHP 7.0
- */
class ConfigConsoleTest extends ConsoleTest
{
- protected function setUp()
+ /**
+ * @var App\Mode|MockInterface $appMode
+ */
+ private $appMode;
+ /** @var IManageConfigValues|LegacyMockInterface|MockInterface */
+ private $configMock;
+
+ protected function setUp() : void
{
parent::setUp();
- $this->mockApp($this->root);
-
- \Mockery::getConfiguration()->setConstantsMap([
+ Mockery::getConfiguration()->setConstantsMap([
Mode::class => [
- 'DBCONFIGAVAILABLE' => 0
- ]
+ 'DBCONFIGAVAILABLE' => 0,
+ ],
]);
- $this->mode
- ->shouldReceive('has')
- ->andReturn(true);
+ $this->appMode = Mockery::mock(App\Mode::class);
+ $this->appMode->shouldReceive('has')
+ ->andReturn(true);
+ $this->configMock = Mockery::mock(IManageConfigValues::class);
}
- function testSetGetKeyValue() {
+ public function testSetGetKeyValue()
+ {
$this->configMock
->shouldReceive('set')
->with('config', 'test', 'now')
$this->configMock
->shouldReceive('get')
->with('config', 'test')
- ->andReturn('now')
+ ->andReturn('old')
->twice();
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('config', 'test')
+ ->andReturn('now')
+ ->once();
- $console = new Config($this->consoleArgv);
+ $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
$console->setArgument(0, 'config');
$console->setArgument(1, 'test');
$console->setArgument(2, 'now');
$txt = $this->dumpExecute($console);
- $this->assertEquals("config.test <= now\n", $txt);
+ self::assertEquals("config.test <= now\n", $txt);
$this->configMock
->shouldReceive('get')
->andReturn('now')
->once();
- $console = new Config($this->consoleArgv);
+ $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
$console->setArgument(0, 'config');
$console->setArgument(1, 'test');
$txt = $this->dumpExecute($console);
- $this->assertEquals("config.test => now\n", $txt);
+ self::assertEquals("config.test => now\n", $txt);
$this->configMock
->shouldReceive('get')
->andReturn(null)
->once();
- $console = new Config($this->consoleArgv);
+ $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
$console->setArgument(0, 'config');
$console->setArgument(1, 'test');
$txt = $this->dumpExecute($console);
- $this->assertEquals("config.test => \n", $txt);
+ self::assertEquals("config.test => NULL\n", $txt);
}
- function testSetArrayValue() {
+ public function testSetArrayValue()
+ {
$testArray = [1, 2, 3];
$this->configMock
->shouldReceive('get')
->andReturn($testArray)
->once();
- $console = new Config($this->consoleArgv);
+ $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
$console->setArgument(0, 'config');
$console->setArgument(1, 'test');
$console->setArgument(2, 'now');
$txt = $this->dumpExecute($console);
- $this->assertEquals("[Error] config.test is an array and can't be set using this command.\n", $txt);
+ self::assertEquals("[Error] config.test is an array and can't be set using this command.\n", $txt);
}
- function testTooManyArguments() {
- $console = new Config($this->consoleArgv);
+ public function testSetExistingValue()
+ {
+ $this->configMock
+ ->shouldReceive('get')
+ ->with('config', 'test')
+ ->andReturn('now')
+ ->twice();
+
+ $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
+ $console->setArgument(0, 'config');
+ $console->setArgument(1, 'test');
+ $console->setArgument(2, 'now');
+ $txt = $this->dumpExecute($console);
+
+ self::assertEquals("[Error] config.test already set to now.\n", $txt);
+ }
+
+ public function testTooManyArguments()
+ {
+ $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
$console->setArgument(0, 'config');
$console->setArgument(1, 'test');
$console->setArgument(2, 'it');
$console->setArgument(3, 'now');
- $txt = $this->dumpExecute($console);
+ $txt = $this->dumpExecute($console);
$assertion = '[Warning] Too many arguments';
$firstline = substr($txt, 0, strlen($assertion));
- $this->assertEquals($assertion, $firstline);
+ self::assertEquals($assertion, $firstline);
}
- function testVerbose() {
+ public function testVerbose()
+ {
$this->configMock
->shouldReceive('get')
->with('test', 'it')
->andReturn('now')
->once();
- $console = new Config($this->consoleArgv);
+ $console = new Config($this->appMode, $this->configMock, $this->consoleArgv);
$console->setArgument(0, 'test');
$console->setArgument(1, 'it');
$console->setOption('v', 1);
$executable = $this->consoleArgv[0];
- $assertion = <<<CONF
+ $assertion = <<<CONF
Executable: {$executable}
Class: Friendica\Console\Config
Arguments: array (
test.it => now
CONF;
- $txt = $this->dumpExecute($console);
- $this->assertEquals($assertion, $txt);
+ $txt = $this->dumpExecute($console);
+ self::assertEquals($assertion, $txt);
}
- function testUnableToSet() {
+ public function testUnableToSet()
+ {
$this->configMock
->shouldReceive('set')
->with('test', 'it', 'now')
$this->configMock
->shouldReceive('get')
->with('test', 'it')
- ->andReturn(NULL)
- ->once();
- $console = new Config();
+ ->andReturn(null)
+ ->twice();
+ $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
$console->setArgument(0, 'test');
$console->setArgument(1, 'it');
$console->setArgument(2, 'now');
$txt = $this->dumpExecute($console);
- $this->assertSame("Unable to set test.it\n", $txt);
+ self::assertSame("Unable to set test.it\n", $txt);
}
public function testGetHelp()
-v Show more debug information.
HELP;
- $console = new Config($this->consoleArgv);
+ $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
$console->setOption('help', true);
$txt = $this->dumpExecute($console);
- $this->assertEquals($txt, $theHelp);
+ self::assertEquals($txt, $theHelp);
}
}