mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +00:00
Moving response construction into Controller, this will let controller classes more easily modify the response subclass they want to use.
Test case updated.
This commit is contained in:
parent
44f1687f5b
commit
7221f9c3b9
2 changed files with 44 additions and 11 deletions
|
@ -118,6 +118,21 @@ class Controller extends Object {
|
|||
*/
|
||||
public $request;
|
||||
|
||||
/**
|
||||
* An instance of a CakeResponse object that contains information about the impending response
|
||||
*
|
||||
* @var CakeResponse
|
||||
*/
|
||||
public $response;
|
||||
|
||||
|
||||
/**
|
||||
* The classname to use for creating the response object.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_responseClass = 'CakeResponse';
|
||||
|
||||
/**
|
||||
* Holds pagination defaults for controller actions. The keys that can be included
|
||||
* in this array are: 'conditions', 'fields', 'order', 'limit', 'page', and 'recursive',
|
||||
|
@ -322,9 +337,8 @@ class Controller extends Object {
|
|||
*
|
||||
* @param CakeRequest $request Request object for this controller can be null for testing.
|
||||
* But expect that features that use the params will not work.
|
||||
* @param CakeResponse $response Response object for this controller
|
||||
*/
|
||||
public function __construct($request = null, $response = null) {
|
||||
public function __construct($request = null) {
|
||||
if ($this->name === null) {
|
||||
$r = null;
|
||||
if (!preg_match('/(.*)Controller/i', get_class($this), $r)) {
|
||||
|
@ -349,7 +363,7 @@ class Controller extends Object {
|
|||
if ($request instanceof CakeRequest) {
|
||||
$this->_setRequest($request);
|
||||
}
|
||||
$this->response = $response;
|
||||
$this->getResponse();
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
|
@ -501,6 +515,18 @@ class Controller extends Object {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the response object for this controller. Will construct the response if it has not already been built.
|
||||
*
|
||||
* @return CakeResponse
|
||||
*/
|
||||
public function getResponse() {
|
||||
if (empty($this->response)) {
|
||||
$this->response = new $this->_responseClass(array('charset' => Configure::read('App.encoding')));
|
||||
}
|
||||
return $this->response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Perform the startup process for this controller.
|
||||
* Fire the Component and Controller callbacks in the correct order.
|
||||
|
|
|
@ -856,7 +856,8 @@ class ControllerTest extends CakeTestCase {
|
|||
function testFlash() {
|
||||
$request = new CakeRequest('controller_posts/index');
|
||||
|
||||
$Controller = new Controller($request, $this->getMock('CakeResponse', array('_sendHeader')));
|
||||
$Controller = new Controller($request);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('_sendHeader'));
|
||||
$Controller->flash('this should work', '/flash');
|
||||
$result = $Controller->response->body();
|
||||
|
||||
|
@ -880,7 +881,8 @@ class ControllerTest extends CakeTestCase {
|
|||
$this->assertEqual($result, $expected);
|
||||
|
||||
App::build(array('views' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'views'. DS)));
|
||||
$Controller = new Controller(null, $this->getMock('CakeResponse', array('_sendHeader')));
|
||||
$Controller = new Controller(null);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('_sendHeader'));
|
||||
$Controller->flash('this should work', '/flash', 1, 'ajax2');
|
||||
$result = $Controller->response->body();
|
||||
$this->assertPattern('/Ajax!/', $result);
|
||||
|
@ -1030,11 +1032,12 @@ class ControllerTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testRedirectByCode($code, $msg) {
|
||||
$Controller = new Controller(null, $this->getMock('CakeResponse', array('header', 'statusCode')));
|
||||
|
||||
$Controller = new Controller(null);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('header', 'statusCode'));
|
||||
|
||||
$Controller->Component = new Component();
|
||||
$Controller->Component->init($Controller);
|
||||
|
||||
$Controller->response->expects($this->once())->method('statusCode')
|
||||
->with($code);
|
||||
$Controller->response->expects($this->once())->method('header')
|
||||
|
@ -1051,7 +1054,8 @@ class ControllerTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testRedirectByMessage($code, $msg) {
|
||||
$Controller = new Controller(null, $this->getMock('CakeResponse', array('header', 'statusCode')));
|
||||
$Controller = new Controller(null);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('header', 'statusCode'));
|
||||
|
||||
$Controller->Component = new Component();
|
||||
$Controller->Component->init($Controller);
|
||||
|
@ -1072,7 +1076,8 @@ class ControllerTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testRedirectTriggeringComponentsReturnNull() {
|
||||
$Controller = new Controller(null, $this->getMock('CakeResponse', array('header', 'statusCode')));
|
||||
$Controller = new Controller(null);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('header', 'statusCode'));
|
||||
$Controller->Component = $this->getMock('Component');
|
||||
|
||||
$Controller->Component->expects($this->once())->method('beforeRedirect')->will($this->returnValue(null));
|
||||
|
@ -1092,7 +1097,8 @@ class ControllerTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testRedirectBeforeRedirectModifyingParams() {
|
||||
$Controller = new Controller(null, $this->getMock('CakeResponse', array('header', 'statusCode')));
|
||||
$Controller = new Controller(null);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('header', 'statusCode'));
|
||||
$Controller->Component = $this->getMock('Component');
|
||||
|
||||
$Controller->Component->expects($this->once())->method('beforeRedirect')
|
||||
|
@ -1414,7 +1420,8 @@ class ControllerTest extends CakeTestCase {
|
|||
* @return void
|
||||
*/
|
||||
function testControllerHttpCodes() {
|
||||
$Controller = new Controller(null, $this->getMock('CakeResponse', array('httpCodes')));
|
||||
$Controller = new Controller(null);
|
||||
$Controller->response = $this->getMock('CakeResponse', array('httpCodes'));
|
||||
$Controller->response->expects($this->at(0))->method('httpCodes')->with(null);
|
||||
$Controller->response->expects($this->at(1))->method('httpCodes')->with(100);
|
||||
$Controller->httpCodes();
|
||||
|
|
Loading…
Reference in a new issue