cacert-testmgr/external/ZendFramework-1.9.5/tests/Zend/View/Helper/ActionTest.php
Markus Warg 8398c9048d initially import ZendFramework-1.9.5 into repository
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
2010-03-31 10:12:32 +02:00

341 lines
11 KiB
PHP

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_View
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @version $Id: ActionTest.php 17363 2009-08-03 07:40:18Z bkarwin $
*/
// Call Zend_View_Helper_ActionTest::main() if this source file is executed directly.
if (!defined("PHPUnit_MAIN_METHOD")) {
define("PHPUnit_MAIN_METHOD", "Zend_View_Helper_ActionTest::main");
}
require_once dirname(__FILE__) . '/../../../TestHelper.php';
/** Zend_View_Helper_Action */
require_once 'Zend/View/Helper/Action.php';
/** Zend_Controller_Front */
require_once 'Zend/Controller/Front.php';
/** Zend_Controller_Request_Http */
require_once 'Zend/Controller/Request/Http.php';
/** Zend_Controller_Response_Http */
require_once 'Zend/Controller/Response/Http.php';
/** Zend_View */
require_once 'Zend/View.php';
/**
* Test class for Zend_View_Helper_Action.
*
* @category Zend
* @package Zend_View
* @subpackage UnitTests
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
* @group Zend_View
* @group Zend_View_Helper
*/
class Zend_View_Helper_ActionTest extends PHPUnit_Framework_TestCase
{
/**
* Runs the test methods of this class.
*
* @return void
*/
public static function main()
{
$suite = new PHPUnit_Framework_TestSuite("Zend_View_Helper_ActionTest");
$result = PHPUnit_TextUI_TestRunner::run($suite);
}
/**
* Sets up the fixture, for example, open a network connection.
* This method is called before a test is executed.
*
* @return void
*/
public function setUp()
{
$this->_origServer = $_SERVER;
$_SERVER = array(
'SCRIPT_FILENAME' => __FILE__,
'PHP_SELF' => __FILE__,
);
$front = Zend_Controller_Front::getInstance();
$front->resetInstance();
$this->request = new Zend_Controller_Request_Http('http://framework.zend.com/action-foo');
$this->response = new Zend_Controller_Response_Http();
$this->response->headersSentThrowsException = false;
$front->setRequest($this->request)
->setResponse($this->response)
->addModuleDirectory(dirname(__FILE__) . '/_files/modules');
$this->view = new Zend_View();
$this->helper = new Zend_View_Helper_Action();
$this->helper->setView($this->view);
}
/**
* Tears down the fixture, for example, close a network connection.
* This method is called after a test is executed.
*
* @return void
*/
public function tearDown()
{
unset($this->request, $this->response, $this->helper);
$_SERVER = $this->_origServer;
}
/**
* @return void
*/
public function testInitialStateHasClonedObjects()
{
$this->assertNotSame($this->request, $this->helper->request);
$this->assertNotSame($this->response, $this->helper->response);
$dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
$this->assertNotSame($dispatcher, $this->helper->dispatcher);
}
/**
* @return void
*/
public function testInitialStateHasDefaultModuleName()
{
$dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();
$module = $dispatcher->getDefaultModule();
$this->assertEquals($module, $this->helper->defaultModule);
$dispatcher->setDefaultModule('foo');
$helper = new Zend_View_Helper_Action();
$this->assertEquals('foo', $helper->defaultModule);
}
/**
* @return void
*/
public function testResetObjectsClearsRequestVars()
{
$this->helper->request->setParam('foo', 'action-bar');
$this->helper->resetObjects();
$this->assertNull($this->helper->request->getParam('foo'));
}
/**
* @return void
*/
public function testResetObjectsClearsResponseBody()
{
$this->helper->response->setBody('foobarbaz');
$this->helper->resetObjects();
$body = $this->helper->response->getBody();
$this->assertTrue(empty($body));
}
/**
* @return void
*/
public function testResetObjectsClearsResponseHeaders()
{
$this->helper->response->setHeader('X-Foo', 'Bar')
->setRawHeader('HTTP/1.1');
$this->helper->resetObjects();
$headers = $this->helper->response->getHeaders();
$rawHeaders = $this->helper->response->getRawHeaders();
$this->assertTrue(empty($headers));
$this->assertTrue(empty($rawHeaders));
}
/**
* @return void
*/
public function testActionReturnsContentFromDefaultModule()
{
$value = $this->helper->action('bar', 'action-foo');
$this->assertContains('In default module, FooController::barAction()', $value);
}
/**
* @return void
*/
public function testActionReturnsContentFromSpecifiedModule()
{
$value = $this->helper->action('bar', 'foo', 'foo');
$this->assertContains('In foo module, Foo_FooController::barAction()', $value);
}
/**
* @return void
*/
public function testActionReturnsContentReflectingPassedParams()
{
$value = $this->helper->action('baz', 'action-foo', null, array('bat' => 'This is my message'));
$this->assertNotContains('BOGUS', $value, var_export($this->helper->request->getUserParams(), 1));
$this->assertContains('This is my message', $value);
}
/**
* @return void
*/
public function testActionReturnsEmptyStringWhenForwardDetected()
{
$value = $this->helper->action('forward', 'action-foo');
$this->assertEquals('', $value);
}
/**
* @return void
*/
public function testActionReturnsEmptyStringWhenRedirectDetected()
{
$value = $this->helper->action('redirect', 'action-foo');
$this->assertEquals('', $value);
}
/**
* @return void
*/
public function testConstructorThrowsExceptionWithNoControllerDirsInFrontController()
{
Zend_Controller_Front::getInstance()->resetInstance();
try {
$helper = new Zend_View_Helper_Action();
$this->fail('Empty front controller should cause action helper to throw exception');
} catch (Exception $e) {
}
}
/**
* @return void
*/
public function testConstructorThrowsExceptionWithNoRequestInFrontController()
{
$front = Zend_Controller_Front::getInstance();
$front->resetInstance();
$response = new Zend_Controller_Response_Http();
$response->headersSentThrowsException = false;
$front->setResponse($response)
->addModuleDirectory(dirname(__FILE__) . '/_files/modules');
try {
$helper = new Zend_View_Helper_Action();
$this->fail('No request in front controller should cause action helper to throw exception');
} catch (Exception $e) {
}
}
/**
* @return void
*/
public function testConstructorThrowsExceptionWithNoResponseInFrontController()
{
$front = Zend_Controller_Front::getInstance();
$front->resetInstance();
$request = new Zend_Controller_Request_Http('http://framework.zend.com/foo');
$front->setRequest($this->request)
->addModuleDirectory(dirname(__FILE__) . '/_files/modules');
try {
$helper = new Zend_View_Helper_Action();
$this->fail('No response in front controller should cause action helper to throw exception');
} catch (Exception $e) {
}
}
public function testViewObjectRemainsUnchangedAfterAction()
{
$value = $this->helper->action('bar', 'foo', 'foo');
$this->assertContains('In foo module, Foo_FooController::barAction()', $value);
$this->assertNull($this->view->bar);
}
public function testNestingActionsDoesNotBreakPlaceholderHelpers()
{
$html = $this->helper->action('nest', 'foo', 'foo');
$title = $this->view->headTitle()->toString();
$this->assertContains(' - ', $title, $title);
$this->assertContains('Foo Nest', $title);
$this->assertContains('Nested Stuff', $title);
}
/**
* @issue ZF-2716
*/
public function testActionWithPartialsUseOfViewRendererReturnsToOriginatingViewState()
{
require_once 'Zend/View/Helper/Partial.php';
$partial = new Zend_View_Helper_Partial();
$this->view->setScriptPath(dirname(__FILE__) . '/_files/modules/default/views/scripts/');
$partial->setView($this->view);
Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view = $this->view;
$partial->partial('partialActionCall.phtml');
$this->assertSame($this->view, Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer')->view);
}
/**
* Future ViewRenderer State issues should be included in this test.
*
* @issue ZF-2846
*/
public function testActionReturnsViewRendererToOriginalState()
{
/* Setup the VR as if we were inside an action controller */
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
$viewRenderer->init();
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
// make sure noRender is false
$this->assertFalse($viewRenderer->getNoRender());
$value = $this->helper->action('bar', 'action-foo');
$viewRendererPostAction = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
// ViewRenderer noRender should still be false
$this->assertFalse($viewRendererPostAction->getNoRender());
$this->assertSame($viewRenderer, $viewRendererPostAction);
}
/**
* Multiple call state issue
*
*
* @group ZF-3456
*/
public function testActionCalledWithinActionResetsResponseState()
{
$value = $this->helper->action('bar-one', 'baz', 'foo');
$this->assertRegexp('/Baz-Three-View-Script\s+Baz-Two-View-Script\s+Baz-One-View-Script/s', $value);
}
}
// Call Zend_View_Helper_ActionTest::main() if this source file is executed directly.
if (PHPUnit_MAIN_METHOD == "Zend_View_Helper_ActionTest::main") {
Zend_View_Helper_ActionTest::main();
}