summaryrefslogtreecommitdiff
path: root/poc/poc02-compiling-cake/src/vendor/cakephp-2.2.1-0-gcc44130/lib/Cake/Test/Case/Console/ConsoleErrorHandlerTest.php
blob: ef24dcbcfce73b63d24e1e0ee1359dac7c491117 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
/**
 * ConsoleErrorHandler Test case
 *
 * PHP versions 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright 2005-2012, Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       Cake.Test.Case.Console
 * @since         CakePHP(tm) v 2.0
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */

App::uses('ConsoleErrorHandler', 'Console');

/**
 * ConsoleErrorHandler Test case.
 *
 * @package       Cake.Test.Case.Console
 */
class ConsoleErrorHandlerTest extends CakeTestCase {

/**
 * setup, create mocks
 *
 * @return Mock object
 */
	public function setUp() {
		parent::setUp();
		$this->Error = $this->getMock('ConsoleErrorHandler', array('_stop'));
		ConsoleErrorHandler::$stderr = $this->getMock('ConsoleOutput', array(), array(), '', false);
	}

/**
 * tearDown
 *
 * @return void
 */
	public function tearDown() {
		unset($this->Error);
		parent::tearDown();
	}

/**
 * test that the console error handler can deal with CakeExceptions.
 *
 * @return void
 */
	public function testHandleError() {
		$content = "<error>Notice Error:</error> This is a notice error in [/some/file, line 275]\n";
		ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
			->with($content);

		$this->Error->handleError(E_NOTICE, 'This is a notice error', '/some/file', 275);
	}

/**
 * test that the console error handler can deal with CakeExceptions.
 *
 * @return void
 */
	public function testCakeErrors() {
		$exception = new MissingActionException('Missing action');
		ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
			->with($this->stringContains('Missing action'));

		$this->Error->expects($this->once())
			->method('_stop')
			->with(404);

		$this->Error->handleException($exception);
	}

/**
 * test a non CakeException exception.
 *
 * @return void
 */
	public function testNonCakeExceptions() {
		$exception = new InvalidArgumentException('Too many parameters.');

		ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
			->with($this->stringContains('Too many parameters.'));

		$this->Error->expects($this->once())
			->method('_stop')
			->with(1);

		$this->Error->handleException($exception);
	}

/**
 * test a Error404 exception.
 *
 * @return void
 */
	public function testError404Exception() {
		$exception = new NotFoundException('dont use me in cli.');

		ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
			->with($this->stringContains('dont use me in cli.'));

		$this->Error->expects($this->once())
			->method('_stop')
			->with(404);

		$this->Error->handleException($exception);
	}

/**
 * test a Error500 exception.
 *
 * @return void
 */
	public function testError500Exception() {
		$exception = new InternalErrorException('dont use me in cli.');

		ConsoleErrorHandler::$stderr->expects($this->once())->method('write')
			->with($this->stringContains('dont use me in cli.'));

		$this->Error->expects($this->once())
			->method('_stop')
			->with(500);

		$this->Error->handleException($exception);
	}

}