view = $this->getView(); $this->helper = new Zend_Dojo_View_Helper_ComboBox(); $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() { } public function getView() { require_once 'Zend/View.php'; $view = new Zend_View(); $view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper'); return $view; } public function getElementAsSelect() { return $this->helper->comboBox( 'elementId', 'someCombo', array(), array(), array( 'red' => 'Rouge', 'blue' => 'Bleu', 'white' => 'Blanc', 'orange' => 'Orange', 'black' => 'Noir', 'green' => 'Vert', ) ); } public function getElementAsRemoter() { return $this->helper->comboBox( 'elementId', 'someCombo', array( 'store' => array( 'store' => 'stateStore', 'type' => 'dojo.data.ItemFileReadStore', 'params' => array( 'url' => 'states.txt' ) ), 'searchAttr' => 'name' ), array() ); } public function testShouldAllowDeclarativeDijitCreationAsSelect() { $html = $this->getElementAsSelect(); $this->assertRegexp('/]*(dojoType="dijit.form.ComboBox")/', $html, $html); } public function testShouldAllowProgrammaticDijitCreationAsSelect() { Zend_Dojo_View_Helper_Dojo::setUseProgrammatic(); $html = $this->getElementAsSelect(); $this->assertNotRegexp('/]*(dojoType="dijit.form.ComboBox")/', $html); $this->assertNotNull($this->view->dojo()->getDijit('elementId')); } public function testShouldAllowDeclarativeDijitCreationAsRemoter() { $html = $this->getElementAsRemoter(); if (!preg_match('/(]*(dojoType="dijit.form.ComboBox"))/', $html, $m)) { $this->fail('Did not create text input as remoter: ' . $html); } $this->assertContains('type="text"', $m[1]); } public function testShouldAllowProgrammaticDijitCreationAsRemoter() { Zend_Dojo_View_Helper_Dojo::setUseProgrammatic(); $html = $this->getElementAsRemoter(); $this->assertNotRegexp('/]*(dojoType="dijit.form.ComboBox")/', $html); $this->assertRegexp('/]*(type="text")/', $html); $this->assertNotNull($this->view->dojo()->getDijit('elementId')); $found = false; $scripts = $this->view->dojo()->getOnLoadActions(); foreach ($scripts as $js) { if (strstr($js, 'var stateStore = new ')) { $found = true; break; } } $this->assertTrue($found, 'No store declaration found: ' . var_export($scripts, 1)); } public function testShouldAllowAlternateNotationToSpecifyRemoter() { $html = $this->helper->comboBox( 'elementId', 'someCombo', array( 'store' => 'stateStore', 'storeType' => 'dojo.data.ItemFileReadStore', 'storeParams' => array('url' => 'states.txt'), 'searchAttr' => 'name', ) ); if (!preg_match('/(]*(dojoType="dijit.form.ComboBox"))/', $html, $m)) { $this->fail('Did not create text input as remoter: ' . $html); } $this->assertContains('type="text"', $m[1]); if (!preg_match('/(]*(?:dojoType="dojo.data.ItemFileReadStore")[^>]*>)/', $html, $m)) { $this->fail('Did not create data store: ' . $html); } $this->assertContains('url="states.txt"', $m[1]); } /** * @group ZF-5987 */ public function testStoreCreationWhenUsingProgrammaticCreationShouldRegisterAsDojoJavascript() { Zend_Dojo_View_Helper_Dojo::setUseProgrammatic(true); $html = $this->getElementAsRemoter(); $js = $this->view->dojo()->getOnLoadActions(); $storeDeclarationFound = false; foreach ($js as $statement) { if (strstr($statement, 'var stateStore = new ')) { $storeDeclarationFound = true; break; } } $this->assertTrue($storeDeclarationFound, 'Store definition not found'); } } // Call Zend_Dojo_View_Helper_ComboBoxTest::main() if this source file is executed directly. if (PHPUnit_MAIN_METHOD == "Zend_Dojo_View_Helper_ComboBoxTest::main") { Zend_Dojo_View_Helper_ComboBoxTest::main(); }