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();
$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();
}