<?php /** * CommandListShellTest file * * PHP 5 * * CakePHP : Rapid Development Framework (http://cakephp.org) * Copyright 2005-2011, Cake Software Foundation, Inc. * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @copyright Copyright 2005-2011, Cake Software Foundation, Inc. * @link http://cakephp.org CakePHP Project * @package Cake.Test.Case.Console.Command * @since CakePHP v 2.0 * @license MIT License (http://www.opensource.org/licenses/mit-license.php) */ App::uses('CommandListShell', 'Console/Command'); App::uses('ConsoleOutput', 'Console'); App::uses('ConsoleInput', 'Console'); App::uses('Shell', 'Console'); class TestStringOutput extends ConsoleOutput { public $output = ''; protected function _write($message) { $this->output .= $message; } } class CommandListShellTest extends CakeTestCase { /** * setUp method * * @return void */ public function setUp() { parent::setUp(); App::build(array( 'plugins' => array( CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS ), 'Console/Command' => array( CAKE . 'Test' . DS . 'test_app' . DS . 'Console' . DS . 'Command' . DS ) ), true); CakePlugin::loadAll(); $out = new TestStringOutput(); $in = $this->getMock('ConsoleInput', array(), array(), '', false); $this->Shell = $this->getMock( 'CommandListShell', array('in', '_stop', 'clear'), array($out, $out, $in) ); } /** * teardown * * @return void */ public function tearDown() { parent::tearDown(); unset($this->Shell); CakePlugin::unload(); } /** * test that main finds core shells. * * @return void */ public function testMain() { $this->Shell->main(); $output = $this->Shell->stdout->output; $expected = "/example \[.*TestPlugin, TestPluginTwo.*\]/"; $this->assertPattern($expected, $output); $expected = "/welcome \[.*TestPluginTwo.*\]/"; $this->assertPattern($expected, $output); $expected = "/acl \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/api \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/bake \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/console \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/i18n \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/schema \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/testsuite \[.*CORE.*\]/"; $this->assertPattern($expected, $output); $expected = "/sample \[.*app.*\]/"; $this->assertPattern($expected, $output); } /** * Test the sort param * * @return void */ public function testSortPlugin() { $this->Shell->params['sort'] = true; $this->Shell->main(); $output = $this->Shell->stdout->output; $expected = "/\[.*App.*\]\\v*[ ]+sample/"; $this->assertPattern($expected, $output); $expected = "/\[.*TestPluginTwo.*\]\\v*[ ]+example, welcome/"; $this->assertPattern($expected, $output); $expected = "/\[.*TestPlugin.*\]\\v*[ ]+example/"; $this->assertPattern($expected, $output); $expected = "/\[.*Core.*\]\\v*[ ]+acl, api, bake, command_list, console, i18n, schema, test, testsuite/"; $this->assertPattern($expected, $output); } /** * test xml output. * * @return void */ public function testMainXml() { $this->Shell->params['xml'] = true; $this->Shell->main(); $output = $this->Shell->stdout->output; $find = '<shell name="sample" call_as="sample" provider="app" help="sample -h"/>'; $this->assertContains($find, $output); $find = '<shell name="bake" call_as="bake" provider="CORE" help="bake -h"/>'; $this->assertContains($find, $output); $find = '<shell name="welcome" call_as="TestPluginTwo.welcome" provider="TestPluginTwo" help="TestPluginTwo.welcome -h"/>'; $this->assertContains($find, $output); } }