originalLocale = i18n::get_locale(); i18n::set_locale('en_NZ'); $this->origTimeConfig = Config::inst()->get('TimeField', 'default_config'); Config::inst()->update('TimeField', 'default_config', array('timeformat' => 'HH:mm:ss')); } public function tearDown() { parent::tearDown(); i18n::set_locale($this->originalLocale); Config::inst()->remove('TimeField', 'default_config'); Config::inst()->update('TimeField', 'default_config', $this->origTimeConfig); } public function testConstructorWithoutArgs() { $f = new TimeField('Time'); $this->assertEquals($f->dataValue(), null); } public function testConstructorWithString() { $f = new TimeField('Time', 'Time', '23:00:00'); $this->assertEquals($f->dataValue(), '23:00:00'); } public 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())); } public 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'); } public 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'); $f = new TimeField('Time', 'Time'); $f->setValue('12:00 am'); $this->assertEquals($f->dataValue(), '00:00:00'); $f = new TimeField('Time', 'Time'); $f->setValue('12:00:01 am'); $this->assertEquals($f->dataValue(), '00:00:01'); } public function testOverrideWithNull() { $field = new TimeField('Time', 'Time'); $field->setValue('11:00pm'); $field->setValue(''); $this->assertEquals($field->dataValue(), ''); } /** * Test that AM/PM is preserved correctly in various situations */ public function testPreserveAMPM() { // Test with timeformat that includes hour // Check pm $f = new TimeField('Time', 'Time'); $f->setConfig('timeformat', 'h:mm:ss a'); $f->setValue('3:59 pm'); $this->assertEquals($f->dataValue(), '15:59:00'); // Check am $f = new TimeField('Time', 'Time'); $f->setConfig('timeformat', 'h:mm:ss a'); $f->setValue('3:59 am'); $this->assertEquals($f->dataValue(), '03:59:00'); // Check with ISO date/time $f = new TimeField('Time', 'Time'); $f->setConfig('timeformat', 'h:mm:ss a'); $f->setValue('15:59:00'); $this->assertEquals($f->dataValue(), '15:59:00'); // ISO am $f = new TimeField('Time', 'Time'); $f->setConfig('timeformat', 'h:mm:ss a'); $f->setValue('03:59:00'); $this->assertEquals($f->dataValue(), '03:59:00'); } }