output .= $message; } } /** * CompletionShellTest * * @package Cake.Test.Case.Console.Command */ class CompletionShellTest extends CakeTestCase { /** * setUp method * * @return void */ public function setUp() : void { parent::setUp(); App::build(array( 'Plugin' => array( CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS ), 'Console/Command' => array( CAKE . 'Test' . DS . 'test_app' . DS . 'Console' . DS . 'Command' . DS ) ), App::RESET); CakePlugin::load(array('TestPlugin', 'TestPluginTwo')); $out = new TestCompletionStringOutput(); $in = $this->getMock('ConsoleInput', array(), array(), '', false); $this->Shell = $this->getMock( 'CompletionShell', array('in', '_stop', 'clear'), array($out, $out, $in) ); $this->Shell->Command = $this->getMock( 'CommandTask', array('in', '_stop', 'clear'), array($out, $out, $in) ); } /** * tearDown * * @return void */ public function tearDown() : void { parent::tearDown(); unset($this->Shell); CakePlugin::unload(); } /** * test that the startup method supresses the shell header * * @return void */ public function testStartup() { $this->Shell->runCommand('main', array()); $output = $this->Shell->stdout->output; $needle = 'Welcome to CakePHP'; $this->assertTextNotContains($needle, $output); } /** * test that main displays a warning * * @return void */ public function testMain() { $this->Shell->runCommand('main', array()); $output = $this->Shell->stdout->output; $expected = "/This command is not intended to be called manually/"; $this->assertMatchesRegularExpression($expected, $output); } /** * test commands method that list all available commands * * @return void */ public function testCommands() { $this->Shell->runCommand('commands', array()); $output = $this->Shell->stdout->output; $expected = "TestPlugin.example TestPlugin.test_plugin TestPluginTwo.example TestPluginTwo.welcome acl api bake command_list completion console i18n schema server test testsuite upgrade sample\n"; $this->assertEquals($expected, $output); } /** * test that options without argument returns the default options * * @return void */ public function testOptionsNoArguments() { $this->Shell->runCommand('options', array()); $output = $this->Shell->stdout->output; $expected = "--help -h --verbose -v --quiet -q\n"; $this->assertEquals($expected, $output); } /** * test that options with a nonexisting command returns the default options * * @return void */ public function testOptionsNonExistingCommand() { $this->Shell->runCommand('options', array('options', 'foo')); $output = $this->Shell->stdout->output; $expected = "--help -h --verbose -v --quiet -q\n"; $this->assertEquals($expected, $output); } /** * test that options with a existing command returns the proper options * * @return void */ public function testOptions() { $this->Shell->runCommand('options', array('options', 'bake')); $output = $this->Shell->stdout->output; $expected = "--help -h --verbose -v --quiet -q --connection -c --theme -t\n"; $this->assertEquals($expected, $output); } /** * test that subCommands with a existing CORE command returns the proper sub commands * * @return void */ public function testSubCommandsCorePlugin() { $this->Shell->runCommand('subCommands', array('subCommands', 'CORE.bake')); $output = $this->Shell->stdout->output; $expected = "controller db_config fixture model plugin project test view\n"; $this->assertEquals($expected, $output); } /** * test that subCommands with a existing APP command returns the proper sub commands (in this case none) * * @return void */ public function testSubCommandsAppPlugin() { $this->Shell->runCommand('subCommands', array('subCommands', 'app.sample')); $output = $this->Shell->stdout->output; $expected = ''; $this->assertEquals($expected, $output); } /** * test that subCommands with a existing plugin command returns the proper sub commands * * @return void */ public function testSubCommandsPlugin() { $this->Shell->runCommand('subCommands', array('subCommands', 'TestPluginTwo.welcome')); $output = $this->Shell->stdout->output; $expected = "say_hello\n"; $this->assertEquals($expected, $output); } /** * test that subcommands without arguments returns nothing * * @return void */ public function testSubCommandsNoArguments() { $this->Shell->runCommand('subCommands', array()); $output = $this->Shell->stdout->output; $expected = ''; $this->assertEquals($expected, $output); } /** * test that subcommands with a nonexisting command returns nothing * * @return void */ public function testSubCommandsNonExistingCommand() { $this->Shell->runCommand('subCommands', array('subCommands', 'foo')); $output = $this->Shell->stdout->output; $expected = ''; $this->assertEquals($expected, $output); } /** * test that subcommands returns the available subcommands for the given command * * @return void */ public function testSubCommands() { $this->Shell->runCommand('subCommands', array('subCommands', 'bake')); $output = $this->Shell->stdout->output; $expected = "controller db_config fixture model plugin project test view\n"; $this->assertEquals($expected, $output); } /** * test that fuzzy returns nothing * * @return void */ public function testFuzzy() { $this->Shell->runCommand('fuzzy', array()); $output = $this->Shell->stdout->output; $expected = ''; $this->assertEquals($expected, $output); } }