]> git.mxchange.org Git - friendica.git/blobdiff - tests/src/Console/ConfigConsoleTest.php
Just commit config transactions if something changed
[friendica.git] / tests / src / Console / ConfigConsoleTest.php
index 837d234b831d5cb062e10caedaf5814ecd8975fe..b26b6baf3f853f0112441bd7715162b1793a2fd1 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2023, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -24,7 +24,9 @@ namespace Friendica\Test\src\Console;
 use Friendica\App;
 use Friendica\App\Mode;
 use Friendica\Console\Config;
-use Friendica\Core\Config\IConfig;
+use Friendica\Core\Config\Capability\IManageConfigValues;
+use Mockery;
+use Mockery\LegacyMockInterface;
 use Mockery\MockInterface;
 
 class ConfigConsoleTest extends ConsoleTest
@@ -33,27 +35,27 @@ class ConfigConsoleTest extends ConsoleTest
         * @var App\Mode|MockInterface $appMode
         */
        private $appMode;
-       /** @var IConfig|\Mockery\LegacyMockInterface|MockInterface */
+       /** @var IManageConfigValues|LegacyMockInterface|MockInterface */
        private $configMock;
 
-       protected function setUp()
+       protected function setUp() : void
        {
                parent::setUp();
 
-               \Mockery::getConfiguration()->setConstantsMap([
+               Mockery::getConfiguration()->setConstantsMap([
                        Mode::class => [
-                               'DBCONFIGAVAILABLE' => 0
-                       ]
+                               'DBCONFIGAVAILABLE' => 0,
+                       ],
                ]);
 
-               $this->appMode = \Mockery::mock(App\Mode::class);
+               $this->appMode = Mockery::mock(App\Mode::class);
                $this->appMode->shouldReceive('has')
-                       ->andReturn(true);
+                                         ->andReturn(true);
 
-               $this->configMock = \Mockery::mock(IConfig::class);
+               $this->configMock = Mockery::mock(IManageConfigValues::class);
        }
 
-       function testSetGetKeyValue()
+       public function testSetGetKeyValue()
        {
                $this->configMock
                        ->shouldReceive('set')
@@ -63,8 +65,13 @@ class ConfigConsoleTest extends ConsoleTest
                $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->appMode, $this->configMock, $this->consoleArgv);
                $console->setArgument(0, 'config');
@@ -95,10 +102,11 @@ class ConfigConsoleTest extends ConsoleTest
                $console->setArgument(0, 'config');
                $console->setArgument(1, 'test');
                $txt = $this->dumpExecute($console);
-               self::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')
@@ -115,19 +123,38 @@ class ConfigConsoleTest extends ConsoleTest
                self::assertEquals("[Error] config.test is an array and can't be set using this command.\n", $txt);
        }
 
-       function testTooManyArguments() {
+       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));
                self::assertEquals($assertion, $firstline);
        }
 
-       function testVerbose() {
+       public function testVerbose()
+       {
                $this->configMock
                        ->shouldReceive('get')
                        ->with('test', 'it')
@@ -138,7 +165,7 @@ class ConfigConsoleTest extends ConsoleTest
                $console->setArgument(1, 'it');
                $console->setOption('v', 1);
                $executable = $this->consoleArgv[0];
-               $assertion = <<<CONF
+               $assertion  = <<<CONF
 Executable: {$executable}
 Class: Friendica\Console\Config
 Arguments: array (
@@ -151,11 +178,12 @@ Options: array (
 test.it => now
 
 CONF;
-               $txt = $this->dumpExecute($console);
+               $txt        = $this->dumpExecute($console);
                self::assertEquals($assertion, $txt);
        }
 
-       function testUnableToSet() {
+       public function testUnableToSet()
+       {
                $this->configMock
                        ->shouldReceive('set')
                        ->with('test', 'it', 'now')
@@ -164,8 +192,8 @@ CONF;
                $this->configMock
                        ->shouldReceive('get')
                        ->with('test', 'it')
-                       ->andReturn(NULL)
-                       ->once();
+                       ->andReturn(null)
+                       ->twice();
                $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]);
                $console->setArgument(0, 'test');
                $console->setArgument(1, 'it');