Merge branch 'new_error_layout'

This commit is contained in:
Anton Grebnev
2012-06-04 16:11:28 +04:00
6 changed files with 146 additions and 10 deletions

View File

@ -44,7 +44,7 @@ class FrontControllerTest extends PHPUnit_Framework_TestCase
$this->getMock('View');
}
if (!class_exists('ErrorLayout')) {
$this->getMock('ErrorLayout', array('fetch'), array(), 'ErrorLayoutMock');
$this->getMock('ErrorLayout', array('fetch', 'setException'), array(), 'ErrorLayoutMock');
}
if (!class_exists('ErrorActionMock')) {
$this->getMock('ErrorAction', array(), array(), 'ErrorActionMock', false);
@ -190,7 +190,7 @@ class FrontControllerTest extends PHPUnit_Framework_TestCase
$router = $controller->getRouter();
$router->add('user', 'user/account/:id', 'user');
$result = $controller->execute();
$this->assertEmpty($result);
$this->assertNull($result);
}
/**
* @runInSeparateProcess
@ -205,7 +205,7 @@ class FrontControllerTest extends PHPUnit_Framework_TestCase
$router = $controller->getRouter();
$router->add('user', 'user/account/:id', 'NewAjax');
$result = $controller->execute();
$this->assertEmpty($result);
$this->assertNull($result);
}
private function setConstants($val = false)
@ -227,8 +227,6 @@ class FrontControllerTest extends PHPUnit_Framework_TestCase
return 'PHPViewMock';
case 'DefaultLayout':
return 'DefaultLayoutMock';
case 'userAction':
return 'userAction';
case 'ErrorAction':
return 'ErrorActionMock';
case 'ErrorLayout':

View File

@ -106,4 +106,17 @@ class RouterTest extends PHPUnit_Framework_TestCase
$this->assertTrue($router->routeIsExists($name));
$this->assertFalse($router->routeIsExists($name_is_not_exists));
}
public function testGetDefaultErrorLayout()
{
$router = new Router();
$this->assertSame('ErrorLayout', $router->getErrorLayout());
}
public function testSetErrorLayout()
{
$router = new Router();
$router->setErrorLayout('CustomError');
$this->assertSame('CustomErrorLayout', $router->getErrorLayout());
}
}

View File

@ -0,0 +1,82 @@
<?php
/**
* @copyright NetMonsters <team@netmonsters.ru>
* @link http://netmonsters.ru
* @package Majestic
* @subpackage UnitTests
* @since 04-06-2012
* @user: agrebnev
*/
require_once dirname(__FILE__) . '/../../exception/ErrorHandler.php';
require_once dirname(__FILE__) . '/../../exception/GeneralException.php';
require_once dirname(__FILE__) . '/../../app/FrontController.php';
require_once dirname(__FILE__) . '/../../layout/Layout.php';
require_once dirname(__FILE__) . '/../../layout/Error.layout.php';
/**
* @runTestsInSeparateProcesses
*/
class ErrorLayoutTest extends PHPUnit_Framework_TestCase
{
public function run(PHPUnit_Framework_TestResult $result = NULL)
{
$this->setPreserveGlobalState(false);
return parent::run($result);
}
public function setUp()
{
if (!class_exists('RouterMock')) {
$this->getMock('Router', array(), array(), 'RouterMock', false);
}
if (!class_exists('PHPViewMock')) {
$this->getMock('PHPView', array('fetch', 'append', 'prepend', 'assign', 'getTemplate'), array(), 'PHPViewMock', false);
}
set_new_overload(array($this, 'newCallback'));
}
public function testSetException()
{
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$layout = new ErrorLayout();
$layout->setException(new GeneralException());
$this->assertAttributeInstanceOf('GeneralException', 'exception', $layout);
}
public function testExecute()
{
if (!defined('DEBUG')) {
define('DEBUG', false);
}
$action = $this->getMock('Action', array('fetch'));
$action->expects($this->once())
->method('fetch')
->will($this->returnValue('this is the result of Action::fetch()'));
$layout = new ErrorLayout();
$layout->fetch($action);
}
protected function newCallback($className)
{
switch ($className) {
case 'Router':
return 'RouterMock';
case 'PHPView':
return 'PHPViewMock';
default:
return $className;
}
}
public function tearDown()
{
unset_new_overload();
}
}