mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-08-27 13:06:04 +02:00
FEATURE New DateField and TimeField form classes with more consistent API and easier localization API CHANGE Date/time parsing in DateField, TimeField and DatetimeField defaults to i18n::get_locale() ('en_US') instead of using en_NZ/en_GB specific parsing. Use i18n::set_locale('en_NZ') in mysite/_config.php to revert to old behaviour. API CHANGE constructor parameter in TimeField needs to be in ISO date notation (not PHP's date()) API CHANGE TimeField, DateField and related subclasses use Zend_Date for date parsing, meaning they're stricer than the previously used strtotime() API CHANGE Removed DMYCalendarDateField and CalendarDateField, use DateField with setConfig('showcalendar') API CHANGE Removed CompositeDateField, DMYDateField, use DateField with setConfig('dmyfields') API CHANGE Removed DropdownTimeField, use TimeField with setConfig('showdropdown') API CHANGE Removed PopupDateTimeField, use DatetimeField API CHANGE Changed 'date', 'month' and 'year' HTML field names to lowercase in DMYDateField API CHANGE Removed support for ambiguous date formats in DateField, e.g. '06/03/03'. Use DateField->setConfig('dateformat', '<format>') to revert to this behaviour. API CHANGE Removed flag from DateField, CalendarDateField etc., use DateField->setConfig('min') and DateField->setConfig('max') ENHANCEMENT Using Zend_Date for DateField and TimeField, with more robust date handling, starting localization support. Set globally via i18n::set_locale(), or for a field instance through setLocale(). Note: Javascript validation is not localized yet. (from r99360) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@102859 467b73ca-7a2a-4603-9d3b-597d59a354a9
99 lines
2.6 KiB
PHP
99 lines
2.6 KiB
PHP
<?php
|
|
/**
|
|
* @package sapphire
|
|
* @subpackage tests
|
|
*/
|
|
class TimeFieldTest extends SapphireTest {
|
|
|
|
function setUp() {
|
|
parent::setUp();
|
|
|
|
$this->originalLocale = i18n::get_locale();
|
|
i18n::set_locale('en_NZ');
|
|
}
|
|
|
|
function tearDown() {
|
|
parent::tearDown();
|
|
|
|
i18n::set_locale($this->originalLocale);
|
|
}
|
|
|
|
function testConstructorWithoutArgs() {
|
|
$f = new TimeField('Time');
|
|
$this->assertEquals($f->dataValue(), null);
|
|
}
|
|
|
|
function testConstructorWithString() {
|
|
$f = new TimeField('Time', 'Time', '23:00:00');
|
|
$this->assertEquals($f->dataValue(), '23:00:00');
|
|
}
|
|
|
|
function testValidate() {
|
|
$f = new TimeField('Time', 'Time', '11pm');
|
|
$this->assertTrue($f->validate(new RequiredFields()));
|
|
|
|
$f = new TimeField('Time', 'Time', '23:59');
|
|
$this->assertTrue($f->validate(new RequiredFields()));
|
|
|
|
$f = new TimeField('Time', 'Time', 'wrong');
|
|
$this->assertFalse($f->validate(new RequiredFields()));
|
|
}
|
|
|
|
function testSetLocale() {
|
|
// should get en_NZ by default through setUp()
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setLocale('de_DE');
|
|
// TODO Find a hour format thats actually different
|
|
$f->setValue('23:59');
|
|
$this->assertEquals($f->dataValue(), '23:59:00');
|
|
}
|
|
|
|
function testSetValueWithUseStrToTime() {
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('11pm');
|
|
$this->assertEquals($f->dataValue(), '23:00:00',
|
|
'Setting value to "11pm" parses with use_strtotime enabled'
|
|
);
|
|
$this->assertTrue($f->validate(new RequiredFields()));
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setConfig('use_strtotime', false);
|
|
$f->setValue('11pm');
|
|
$this->assertEquals($f->dataValue(), null,
|
|
'Setting value to "11pm" parses with use_strtotime enabled'
|
|
);
|
|
$this->assertFalse($f->validate(new RequiredFields()));
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('11pm');
|
|
$this->assertEquals($f->dataValue(), '23:00:00');
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('11:59pm');
|
|
$this->assertEquals($f->dataValue(), '23:59:00');
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('11:59 pm');
|
|
$this->assertEquals($f->dataValue(), '23:59:00');
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('11:59:38 pm');
|
|
$this->assertEquals($f->dataValue(), '23:59:38');
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('23:59');
|
|
$this->assertEquals($f->dataValue(), '23:59:00');
|
|
|
|
$f = new TimeField('Time', 'Time');
|
|
$f->setValue('23:59:38');
|
|
$this->assertEquals($f->dataValue(), '23:59:38');
|
|
}
|
|
|
|
function testOverrideWithNull() {
|
|
$field = new TimeField('Time', 'Time');
|
|
|
|
$field->setValue('11:00pm');
|
|
$field->setValue('');
|
|
$this->assertEquals($field->dataValue(), '');
|
|
}
|
|
} |