Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
12345 anikendra 1
<?php
2
/**
3
 * CompletionShellTest file
4
 *
5
 * PHP 5
6
 *
7
 * CakePHP :  Rapid Development Framework (http://cakephp.org)
8
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
9
 *
10
 * Licensed under The MIT License
11
 * For full copyright and license information, please see the LICENSE.txt
12
 * Redistributions of files must retain the above copyright notice.
13
 *
14
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
15
 * @link          http://cakephp.org CakePHP Project
16
 * @package       Cake.Test.Case.Console.Command
17
 * @since         CakePHP v 2.5
18
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
19
 */
20
 
21
App::uses('CompletionShell', 'Console/Command');
22
App::uses('ConsoleOutput', 'Console');
23
App::uses('ConsoleInput', 'Console');
24
App::uses('Shell', 'Console');
25
App::uses('CommandTask', 'Console/Command/Task');
26
 
27
/**
28
 * Class TestCompletionStringOutput
29
 *
30
 * @package       Cake.Test.Case.Console.Command
31
 */
32
class TestCompletionStringOutput extends ConsoleOutput {
33
 
34
	public $output = '';
35
 
36
	protected function _write($message) {
37
		$this->output .= $message;
38
	}
39
 
40
}
41
 
42
/**
43
 * Class CompletionShellTest
44
 *
45
 * @package       Cake.Test.Case.Console.Command
46
 */
47
class CompletionShellTest extends CakeTestCase {
48
 
49
/**
50
 * setUp method
51
 *
52
 * @return void
53
 */
54
	public function setUp() {
55
		parent::setUp();
56
		App::build(array(
57
			'Plugin' => array(
58
				CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS
59
			),
60
			'Console/Command' => array(
61
				CAKE . 'Test' . DS . 'test_app' . DS . 'Console' . DS . 'Command' . DS
62
			)
63
		), App::RESET);
64
		CakePlugin::load(array('TestPlugin', 'TestPluginTwo'));
65
 
66
		$out = new TestCompletionStringOutput();
67
		$in = $this->getMock('ConsoleInput', array(), array(), '', false);
68
 
69
		$this->Shell = $this->getMock(
70
			'CompletionShell',
71
			array('in', '_stop', 'clear'),
72
			array($out, $out, $in)
73
		);
74
 
75
		$this->Shell->Command = $this->getMock(
76
			'CommandTask',
77
			array('in', '_stop', 'clear'),
78
			array($out, $out, $in)
79
		);
80
	}
81
 
82
/**
83
 * tearDown
84
 *
85
 * @return void
86
 */
87
	public function tearDown() {
88
		parent::tearDown();
89
		unset($this->Shell);
90
		CakePlugin::unload();
91
	}
92
 
93
/**
94
 * test that the startup method supresses the shell header
95
 *
96
 * @return void
97
 */
98
	public function testStartup() {
99
		$this->Shell->runCommand('main', array());
100
		$output = $this->Shell->stdout->output;
101
 
102
		$needle = 'Welcome to CakePHP';
103
		$this->assertTextNotContains($needle, $output);
104
	}
105
 
106
/**
107
 * test that main displays a warning
108
 *
109
 * @return void
110
 */
111
	public function testMain() {
112
		$this->Shell->runCommand('main', array());
113
		$output = $this->Shell->stdout->output;
114
 
115
		$expected = "/This command is not intended to be called manually/";
116
		$this->assertRegExp($expected, $output);
117
	}
118
 
119
/**
120
 * test commands method that list all available commands
121
 *
122
 * @return void
123
 */
124
	public function testCommands() {
125
		$this->Shell->runCommand('commands', array());
126
		$output = $this->Shell->stdout->output;
127
 
128
		$expected = "TestPlugin.example TestPluginTwo.example TestPluginTwo.welcome acl api bake command_list completion console i18n schema server test testsuite upgrade sample\n";
129
		$this->assertEquals($expected, $output);
130
	}
131
 
132
/**
133
 * test that options without argument returns the default options
134
 *
135
 * @return void
136
 */
137
	public function testOptionsNoArguments() {
138
		$this->Shell->runCommand('options', array());
139
		$output = $this->Shell->stdout->output;
140
 
141
		$expected = "--help -h --verbose -v --quiet -q\n";
142
		$this->assertEquals($expected, $output);
143
	}
144
 
145
/**
146
 * test that options with a nonexisting command returns the default options
147
 *
148
 * @return void
149
 */
150
	public function testOptionsNonExistingCommand() {
151
		$this->Shell->runCommand('options', array('options', 'foo'));
152
		$output = $this->Shell->stdout->output;
153
 
154
		$expected = "--help -h --verbose -v --quiet -q\n";
155
		$this->assertEquals($expected, $output);
156
	}
157
 
158
/**
159
 * test that options with a existing command returns the proper options
160
 *
161
 * @return void
162
 */
163
	public function testOptions() {
164
		$this->Shell->runCommand('options', array('options', 'bake'));
165
		$output = $this->Shell->stdout->output;
166
 
167
		$expected = "--help -h --verbose -v --quiet -q --connection -c --theme -t\n";
168
		$this->assertEquals($expected, $output);
169
	}
170
 
171
/**
172
 * test that subCommands with a existing CORE command returns the proper sub commands
173
 *
174
 * @return void
175
 */
176
	public function testSubCommandsCorePlugin() {
177
		$this->Shell->runCommand('subCommands', array('subCommands', 'CORE.bake'));
178
		$output = $this->Shell->stdout->output;
179
 
180
		$expected = "controller db_config fixture model plugin project test view\n";
181
		$this->assertEquals($expected, $output);
182
	}
183
 
184
/**
185
 * test that subCommands with a existing APP command returns the proper sub commands (in this case none)
186
 *
187
 * @return void
188
 */
189
	public function testSubCommandsAppPlugin() {
190
		$this->Shell->runCommand('subCommands', array('subCommands', 'app.sample'));
191
		$output = $this->Shell->stdout->output;
192
 
193
		$expected = '';
194
		$this->assertEquals($expected, $output);
195
	}
196
 
197
/**
198
 * test that subCommands with a existing plugin command returns the proper sub commands
199
 *
200
 * @return void
201
 */
202
	public function testSubCommandsPlugin() {
203
		$this->Shell->runCommand('subCommands', array('subCommands', 'TestPluginTwo.welcome'));
204
		$output = $this->Shell->stdout->output;
205
 
206
		$expected = "say_hello\n";
207
		$this->assertEquals($expected, $output);
208
	}
209
 
210
/**
211
 * test that subcommands without arguments returns nothing
212
 *
213
 * @return void
214
 */
215
	public function testSubCommandsNoArguments() {
216
		$this->Shell->runCommand('subCommands', array());
217
		$output = $this->Shell->stdout->output;
218
 
219
		$expected = '';
220
		$this->assertEquals($expected, $output);
221
	}
222
 
223
/**
224
 * test that subcommands with a nonexisting command returns nothing
225
 *
226
 * @return void
227
 */
228
	public function testSubCommandsNonExistingCommand() {
229
		$this->Shell->runCommand('subCommands', array('subCommands', 'foo'));
230
		$output = $this->Shell->stdout->output;
231
 
232
		$expected = '';
233
		$this->assertEquals($expected, $output);
234
	}
235
 
236
/**
237
 * test that subcommands returns the available subcommands for the given command
238
 *
239
 * @return void
240
 */
241
	public function testSubCommands() {
242
		$this->Shell->runCommand('subCommands', array('subCommands', 'bake'));
243
		$output = $this->Shell->stdout->output;
244
 
245
		$expected = "controller db_config fixture model plugin project test view\n";
246
		$this->assertEquals($expected, $output);
247
	}
248
 
249
/**
250
 * test that fuzzy returns nothing
251
 *
252
 * @return void
253
 */
254
	public function testFuzzy() {
255
		$this->Shell->runCommand('fuzzy', array());
256
		$output = $this->Shell->stdout->output;
257
 
258
		$expected = '';
259
		$this->assertEquals($expected, $output);
260
	}
261
}