view = $this->getView(); $this->helper = new Zend_Dojo_View_Helper_HorizontalSlider(); $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 getElement() { return $this->helper->horizontalSlider( 'elementId', '', array( 'minimum' => -10, 'maximum' => 10, 'discreteValues' => 11, 'topDecoration' => array( 'labels' => array( ' ', '20%', '40%', '60%', '80%', ' ', ), 'container' => 'top', 'attribs' => array( 'container' => array( 'style' => 'height:1.2em; font-size=75%;color:gray;', ), 'labels' => array( 'style' => 'height:1em; font-size=75%;color:gray;', ), ), 'dijit' => 'HorizontalRuleLabels', ), 'bottomDecoration' => array( 'labels' => array( '0%', '50%', '100%', ), 'attribs' => array( 'labels' => array( 'style' => 'height:1em; font-size=75%;color:gray;', ), ), ), 'leftDecoration' => array( 'labels' => array( ' ', '20%', '40%', '60%', '80%', ' ', ), 'attribs' => array( 'container' => array( 'style' => 'height:1.2em; font-size=75%;color:gray;', ), 'labels' => array( 'style' => 'height:1em; font-size=75%;color:gray;', ), ), 'dijit' => 'VerticalRuleLabels', ), 'rightDecoration' => array( 'labels' => array( '0%', '50%', '100%', ), 'attribs' => array( 'labels' => array( 'style' => 'height:1em; font-size=75%;color:gray;', ), ), ), ), array() ); } public function testShouldAllowDeclarativeDijitCreation() { $html = $this->getElement(); $this->assertRegexp('/]*(dojoType="dijit.form.HorizontalSlider")/', $html, $html); } public function testShouldAllowProgrammaticDijitCreation() { Zend_Dojo_View_Helper_Dojo::setUseProgrammatic(); $html = $this->getElement(); $this->assertNotRegexp('/]*(dojoType="dijit.form.HorizontalSlider")/', $html); $this->assertNotNull($this->view->dojo()->getDijit('elementId-slider')); } public function testShouldCreateOnChangeAttributeByDefault() { $html = $this->getElement(); // Note that ' is converted to ' in Zend_View_Helper_HtmlElement::_htmlAttribs() (line 116) $this->assertContains('onChange="dojo.byId('elementId').value = arguments[0];"', $html, $html); } public function testShouldCreateHiddenElementWithValue() { $html = $this->getElement(); if (!preg_match('/(]*(type="hidden")[^>]*>)/', $html, $m)) { $this->fail('No hidden element found'); } $this->assertContains('id="elementId"', $m[1]); $this->assertContains('value="', $m[1]); } public function testShouldCreateTopAndBottomDecorationsWhenRequested() { $html = $this->getElement(); $this->assertRegexp('/]*(dojoType="dijit.form.HorizontalRule")/', $html, $html); $this->assertRegexp('/]*(dojoType="dijit.form.HorizontalRuleLabels")/', $html, $html); $this->assertContains('topDecoration', $html); $this->assertContains('bottomDecoration', $html); } public function testShouldIgnoreLeftAndRightDecorationsWhenPassed() { $html = $this->getElement(); $this->assertNotContains('leftDecoration', $html); $this->assertNotContains('rightDecoration', $html); } /** * @expectedException Zend_Dojo_View_Exception */ public function testSliderShouldRaiseExceptionIfMissingRequiredParameters() { $this->helper->prepareSlider('foo', 4); } public function testShouldAllowPassingLabelParametersViaDecorationParameters() { $html = $this->helper->horizontalSlider( 'elementId', '', array( 'minimum' => -10, 'maximum' => 10, 'discreteValues' => 11, 'topDecoration' => array( 'labels' => array( ' ', '20%', '40%', '60%', '80%', ' ', ), 'params' => array( 'required' => true, 'labels' => array( 'minimum' => 5, ) ), 'dijit' => 'HorizontalRuleLabels', ), ) ); $this->assertContains('required="', $html); $this->assertContains('minimum="', $html); } /** * @group ZF-4435 */ public function testShouldCreateAppropriateIdsForElementsInSubForms() { $form = new Zend_Dojo_Form; $form->setDecorators(array( 'FormElements', array('TabContainer', array( 'id' => 'tabContainer', 'style' => 'width: 600px; height: 300px;', 'dijitParams' => array( 'tabPosition' => 'top' ), )), 'DijitForm', )); $sliderForm = new Zend_Dojo_Form_SubForm(); $sliderForm->setAttribs(array( 'name' => 'slidertab', 'legend' => 'Slider Elements', )); $sliderForm->addElement( 'HorizontalSlider', 'slide1', array( 'label' => 'Slide me:', 'minimum' => 0, 'maximum' => 25, 'discreteValues' => 10, 'style' => 'width: 450px;', 'topDecorationDijit' => 'HorizontalRuleLabels', 'topDecorationLabels' => array('0%', '50%', '100%'), 'topDecorationParams' => array('style' => 'padding-bottom: 20px;') ) ); $form->addSubForm($sliderForm, 'slidertab') ->setView($this->getView()); $html = $form->render(); $this->assertContains('id="slidertab-slide1-slider"', $html); $this->assertContains('id="slidertab-slide1-slider-topDecoration"', $html); $this->assertContains('id="slidertab-slide1-slider-topDecoration-labels"', $html); } /** * @group ZF-5220 */ public function testLabelDivShouldOpenAndCloseBeforeLabelOl() { $html = $this->getElement(); $this->assertNotRegexp('/]*(dojoType="dijit.form.HorizontalRuleLabels")[^>]*><\/div>\s*
    assertRegexp('/]*><\/div>\s*]*(dojoType="dijit.form.HorizontalRuleLabels")/s', $html, $html); } } // Call Zend_Dojo_View_Helper_HorizontalSliderTest::main() if this source file is executed directly. if (PHPUnit_MAIN_METHOD == "Zend_Dojo_View_Helper_HorizontalSliderTest::main") { Zend_Dojo_View_Helper_HorizontalSliderTest::main(); }