From 2aafb3a3943f003322a1fdf92bfd89a015009e3b Mon Sep 17 00:00:00 2001 From: Anton Terekhov Date: Sun, 11 Nov 2012 13:51:38 +0400 Subject: [PATCH] New default value for AjaxAction->data, new tests --- app/AjaxAction.php | 2 +- tests/app/Action_TestCase.php | 15 ++++++++++++-- tests/app/AjaxActionTest.php | 46 +++++++++++++++++++++++++++++++++++-------- 3 files changed, 52 insertions(+), 11 deletions(-) diff --git a/app/AjaxAction.php b/app/AjaxAction.php index bab999e..f007350 100644 --- a/app/AjaxAction.php +++ b/app/AjaxAction.php @@ -18,7 +18,7 @@ abstract class AjaxAction extends Action * Data to output * @var mixed */ - public $data = 1; + public $data = false; /** * Use json_encode diff --git a/tests/app/Action_TestCase.php b/tests/app/Action_TestCase.php index d552117..92e61b9 100644 --- a/tests/app/Action_TestCase.php +++ b/tests/app/Action_TestCase.php @@ -17,6 +17,7 @@ require_once dirname(__FILE__) . '/../../classes/Env.class.php'; require_once dirname(__FILE__) . '/../../exception/ErrorHandler.php'; require_once dirname(__FILE__) . '/../../app/FrontController.php'; require_once dirname(__FILE__) . '/../../app/Action.php'; +require_once dirname(__FILE__) . '/../../view/iView.php'; class Action_TestCase extends PHPUnit_Framework_TestCase { @@ -42,7 +43,7 @@ class Action_TestCase extends PHPUnit_Framework_TestCase } } -class SomeView +class SomeView implements iView { private $result = array(); public function fetch($template) @@ -53,7 +54,17 @@ class SomeView public function assignObject() {} - public function assign($name, $value) { + public function assign($name, $value = null) { $this->result[$name] = $value; } + + public function prepend($name, $value) + { + + } + + public function append($name, $value) + { + + } } \ No newline at end of file diff --git a/tests/app/AjaxActionTest.php b/tests/app/AjaxActionTest.php index f19583a..9cdce66 100644 --- a/tests/app/AjaxActionTest.php +++ b/tests/app/AjaxActionTest.php @@ -5,7 +5,7 @@ * @link http://netmonsters.ru * @package Majestic * @subpackage UnitTests - * @since 2011-11-1 + * @since 2011-11-01 * * Unit tests for AjaxAction class */ @@ -21,10 +21,9 @@ class AjaxActionTest extends Action_TestCase */ public function testConstruct() { - Config::set('DEBUG', false); Env::setParams(array('ajax' => 'AjaxTemplate', 'param2' => 'value2')); - $action = $this->getMockForAbstractClass('AjaxAction' ); + $action = $this->getMockForAbstractClass('AjaxAction'); $this->assertAttributeEquals('ajax', 'template', $action); } @@ -33,11 +32,10 @@ class AjaxActionTest extends Action_TestCase */ public function testFetchWithEncode() { - Config::set('DEBUG', false); $controller = FrontController::getInstance(); $controller->setView('SomeView'); - $action = $this->getMockForAbstractClass('AjaxAction' ); + $action = $this->getMockForAbstractClass('AjaxAction'); $action->data = array('var' => 'val'); $result = $action->fetch(); $this->assertSame('/actions//ajax', $result['template']); @@ -49,15 +47,47 @@ class AjaxActionTest extends Action_TestCase */ public function testFetchNoEncode() { - Config::set('DEBUG', false); Env::setParams(array('json_encode' => false)); $controller = FrontController::getInstance(); $controller->setView('SomeView'); - $action = $this->getMockForAbstractClass('AjaxAction' ); + $action = $this->getMockForAbstractClass('AjaxAction'); $action->data = array('var' => 'val'); $result = $action->fetch(); $this->assertSame('/actions//ajax', $result['template']); - $this->assertSame( $action->data, $result['data']); + $this->assertSame('Array', (string) $result['data']); + $action->data = 'stringvalue'; + $result = $action->fetch(); + $this->assertSame('/actions//ajax', $result['template']); + $this->assertSame('stringvalue', (string) $result['data']); + } + + /** + * @runInSeparateProcess + */ + public function testFetchWithEncodeDefault() + { + Config::set('DEBUG', false); + $controller = FrontController::getInstance(); + $controller->setView('SomeView'); + $action = $this->getMockForAbstractClass('AjaxAction'); + $result = $action->fetch(); + $this->assertSame('/actions//ajax', $result['template']); + $this->assertSame('false', (string) $result['data']); + } + + /** + * @runInSeparateProcess + */ + public function testFetchNoEncodeDefault() + { + Config::set('DEBUG', false); + Env::setParams(array('json_encode' => false)); + $controller = FrontController::getInstance(); + $controller->setView('SomeView'); + $action = $this->getMockForAbstractClass('AjaxAction'); + $result = $action->fetch(); + $this->assertSame('/actions//ajax', $result['template']); + $this->assertSame('', (string) $result['data']); } } \ No newline at end of file