setConstantsMap([ Mode::class => [ 'DBCONFIGAVAILABLE' => 0 ] ]); $this->appMode = \Mockery::mock(App\Mode::class); $this->appMode->shouldReceive('has') ->andReturn(true); $this->configMock = \Mockery::mock(Configuration::class); } function testSetGetKeyValue() { $this->configMock ->shouldReceive('set') ->with('config', 'test', 'now') ->andReturn(true) ->once(); $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); $this->assertEquals("config.test <= now\n", $txt); $this->configMock ->shouldReceive('get') ->with('config', 'test') ->andReturn('now') ->once(); $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); $this->configMock ->shouldReceive('get') ->with('config', 'test') ->andReturn(null) ->once(); $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); } function testSetArrayValue() { $testArray = [1, 2, 3]; $this->configMock ->shouldReceive('get') ->with('config', 'test') ->andReturn($testArray) ->once(); $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); } 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); $assertion = '[Warning] Too many arguments'; $firstline = substr($txt, 0, strlen($assertion)); $this->assertEquals($assertion, $firstline); } function testVerbose() { $this->configMock ->shouldReceive('get') ->with('test', 'it') ->andReturn('now') ->once(); $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 = << 'test', 1 => 'it', ) Options: array ( 'v' => 1, ) test.it => now CONF; $txt = $this->dumpExecute($console); $this->assertEquals($assertion, $txt); } function testUnableToSet() { $this->configMock ->shouldReceive('set') ->with('test', 'it', 'now') ->andReturn(false) ->once(); $this->configMock ->shouldReceive('get') ->with('test', 'it') ->andReturn(NULL) ->once(); $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); } public function testGetHelp() { // Usable to purposely fail if new commands are added without taking tests into account $theHelp = << [-h|--help|-?] [-v] bin/console config [-h|--help|-?] [-v] bin/console config [-h|--help|-?] [-v] Description bin/console config Lists all config values bin/console config Lists all config values in the provided category bin/console config Shows the value of the provided key in the category bin/console config Sets the value of the provided key in the category Notes: Setting config entries which are manually set in config/local.config.php may result in conflict between database settings and the manual startup settings. Options -h|--help|-? Show help information -v Show more debug information. HELP; $console = new Config($this->appMode, $this->configMock, [$this->consoleArgv]); $console->setOption('help', true); $txt = $this->dumpExecute($console); $this->assertEquals($txt, $theHelp); } }