2015-05-22 21:55:54 +02:00
|
|
|
<?php
|
|
|
|
|
2016-10-14 03:30:05 +02:00
|
|
|
namespace SilverStripe\Forms\Tests;
|
|
|
|
|
2016-08-19 00:51:35 +02:00
|
|
|
use SilverStripe\Dev\SapphireTest;
|
|
|
|
use SilverStripe\Forms\GroupedDropdownField;
|
|
|
|
use SilverStripe\Forms\RequiredFields;
|
|
|
|
|
2016-12-16 05:34:21 +01:00
|
|
|
class GroupedDropdownFieldTest extends SapphireTest
|
|
|
|
{
|
|
|
|
|
|
|
|
public function testValidation()
|
|
|
|
{
|
|
|
|
$field = GroupedDropdownField::create(
|
|
|
|
'Test',
|
|
|
|
'Testing',
|
|
|
|
array(
|
|
|
|
"1" => "One",
|
|
|
|
"Group One" => array(
|
|
|
|
"2" => "Two",
|
|
|
|
"3" => "Three"
|
|
|
|
),
|
|
|
|
"Group Two" => array(
|
|
|
|
"4" => "Four"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
$this->assertEquals(array("1", "2", "3", "4"), $field->getValidValues());
|
|
|
|
|
|
|
|
$validator = new RequiredFields();
|
|
|
|
|
|
|
|
$field->setValue("1");
|
|
|
|
$this->assertTrue($field->validate($validator));
|
|
|
|
|
|
|
|
//test grouped values
|
|
|
|
$field->setValue("3");
|
|
|
|
$this->assertTrue($field->validate($validator));
|
|
|
|
|
|
|
|
//non-existent value should make the field invalid
|
|
|
|
$field->setValue("Over 9000");
|
|
|
|
$this->assertFalse($field->validate($validator));
|
|
|
|
|
|
|
|
//empty string shouldn't validate
|
|
|
|
$field->setValue('');
|
|
|
|
$this->assertFalse($field->validate($validator));
|
|
|
|
|
|
|
|
//empty field should validate after being set
|
|
|
|
$field->setEmptyString('Empty String');
|
|
|
|
$field->setValue('');
|
|
|
|
$this->assertTrue($field->validate($validator));
|
|
|
|
|
|
|
|
//disabled items shouldn't validate
|
|
|
|
$field->setDisabledItems(array('1'));
|
|
|
|
$field->setValue('1');
|
|
|
|
|
|
|
|
$this->assertEquals(array("2", "3", "4"), $field->getValidValues());
|
|
|
|
$this->assertEquals(array("1"), $field->getDisabledItems());
|
|
|
|
|
|
|
|
$this->assertFalse($field->validate($validator));
|
|
|
|
}
|
2015-05-22 21:55:54 +02:00
|
|
|
}
|