silverstripe-framework/tests/forms/OptionsetFieldTest.php
Sean Harvey b2dac644a0 BUG Fixed escaping of name/value in options of form fields
DropdownField was currently escaping options, but CheckboxSetField and
OptionsetField were not. This fixes them to be consistent.
2014-08-04 09:55:35 +12:00

49 lines
1.2 KiB
PHP

<?php
/**
* @package framework
* @subpackage tests
*/
class OptionsetFieldTest extends SapphireTest {
public function testSetDisabledItems() {
$f = new OptionsetField(
'Test',
false,
array(0 => 'Zero', 1 => 'One')
);
$f->setDisabledItems(array(0));
$p = new CSSContentParser($f->Field());
$item0 = $p->getBySelector('#Test_0');
$item1 = $p->getBySelector('#Test_1');
$this->assertEquals(
(string)$item0[0]['disabled'],
'disabled'
);
$this->assertEquals(
(string)$item1[0]['disabled'],
''
);
}
public function testReadonlyField() {
$sourceArray = array(0 => 'No', 1 => 'Yes');
$field = new OptionsetField('FeelingOk', 'are you feeling ok?', $sourceArray, 1);
$field->setEmptyString('(Select one)');
$field->setValue(1);
$readonlyField = $field->performReadonlyTransformation();
preg_match('/Yes/', $field->Field(), $matches);
$this->assertEquals($matches[0], 'Yes');
}
public function testEscapedOptions() {
$field = new OptionsetField('Content', 'Content', array(
'Test' => 'Test',
'Another<weirdvalue>' => 'Another',
));
$html = $field->Field();
$this->assertContains('value="Another&lt;weirdvalue&gt;', $html, 'Option value is escaped');
}
}