front = Zend_Controller_Front::getInstance(); $this->front->resetInstance(); $this->request = new Zend_Controller_Request_Http(); $this->front->setRequest($this->request); } /** * Tears down the fixture, for example, close a network connection. * This method is called after a test is executed. * * @return void */ public function tearDown() { } public function testConstructorInstantiatesPluginIfNotPresent() { $this->assertFalse($this->front->hasPlugin('Zend_Controller_Plugin_ActionStack')); $helper = new Zend_Controller_Action_Helper_ActionStack(); $this->assertTrue($this->front->hasPlugin('Zend_Controller_Plugin_ActionStack')); } public function testConstructorUsesExistingPluginWhenPresent() { $plugin = new Zend_Controller_Plugin_ActionStack(); $this->front->registerPlugin($plugin); $helper = new Zend_Controller_Action_Helper_ActionStack(); $this->assertTrue($this->front->hasPlugin('Zend_Controller_Plugin_ActionStack')); $registered = $this->front->getPlugin('Zend_Controller_Plugin_ActionStack'); $this->assertSame($plugin, $registered); } public function testPushStackPushesToPluginStack() { $helper = new Zend_Controller_Action_Helper_ActionStack(); $plugin = $this->front->getPlugin('Zend_Controller_Plugin_ActionStack'); $request = new Zend_Controller_Request_Simple(); $request->setModuleName('foo') ->setControllerName('bar') ->setActionName('baz'); $helper->pushStack($request); $next = $plugin->popStack(); $this->assertTrue($next instanceof Zend_Controller_Request_Abstract); $this->assertEquals($request->getModuleName(), $next->getModuleName()); $this->assertEquals($request->getControllerName(), $next->getControllerName()); $this->assertEquals($request->getActionName(), $next->getActionName()); $this->assertFalse($next->isDispatched()); } public function testActionToStackPushesNewRequestToPluginStack() { $helper = new Zend_Controller_Action_Helper_ActionStack(); $plugin = $this->front->getPlugin('Zend_Controller_Plugin_ActionStack'); $helper->actionToStack('baz', 'bar', 'foo'); $next = $plugin->popStack(); $this->assertTrue($next instanceof Zend_Controller_Request_Abstract); $this->assertEquals('foo', $next->getModuleName()); $this->assertEquals('bar', $next->getControllerName()); $this->assertEquals('baz', $next->getActionName()); $this->assertFalse($next->isDispatched()); } public function testPassingRequestToActionToStackPushesRequestToPluginStack() { $helper = new Zend_Controller_Action_Helper_ActionStack(); $plugin = $this->front->getPlugin('Zend_Controller_Plugin_ActionStack'); $request = new Zend_Controller_Request_Simple(); $request->setModuleName('foo') ->setControllerName('bar') ->setActionName('baz'); $helper->actionToStack($request); $next = $plugin->popStack(); $this->assertTrue($next instanceof Zend_Controller_Request_Abstract); $this->assertEquals($request->getModuleName(), $next->getModuleName()); $this->assertEquals($request->getControllerName(), $next->getControllerName()); $this->assertEquals($request->getActionName(), $next->getActionName()); $this->assertFalse($next->isDispatched()); } public function testDirectProxiesToActionToStack() { $helper = new Zend_Controller_Action_Helper_ActionStack(); /** FC should be reseted to test ActionStack with a really blank FC */ $this->front->resetInstance(); try { $helper->direct('baz', 'bar', 'foo'); $this->fail('Zend_Controller_Action_Exception should be thrown'); } catch (Zend_Exception $e) { $this->assertTrue( $e instanceof Zend_Controller_Action_Exception, 'Zend_Controller_Action_Exception expected, ' . get_class($e) . ' caught' ); } } public function testCannotStackActionIfNoRequestAvailable() { $helper = new Zend_Controller_Action_Helper_ActionStack(); $plugin = $this->front->getPlugin('Zend_Controller_Plugin_ActionStack'); $helper->direct('baz', 'bar', 'foo'); $next = $plugin->popStack(); $this->assertTrue($next instanceof Zend_Controller_Request_Abstract); $this->assertEquals('foo', $next->getModuleName()); $this->assertEquals('bar', $next->getControllerName()); $this->assertEquals('baz', $next->getActionName()); $this->assertFalse($next->isDispatched()); } } // Call Zend_Controller_Action_Helper_ActionStackTest::main() if this source file is executed directly. if (PHPUnit_MAIN_METHOD == "Zend_Controller_Action_Helper_ActionStackTest::main") { Zend_Controller_Action_Helper_ActionStackTest::main(); }