'input', 'type' => DateField::DATETIME)); $field->setLocale('de_AT'); $field->bind('2.6.2010'); $this->assertDateTimeEquals(new \DateTime('2010-06-02 UTC'), $field->getData()); $this->assertEquals('02.06.2010', $field->getDisplayedData()); } public function testBind_fromInput_string() { $field = new DateField('name', array('widget' => 'input', 'type' => DateField::STRING)); $field->setLocale('de_AT'); $field->bind('2.6.2010'); $this->assertEquals('2010-06-02', $field->getData()); $this->assertEquals('02.06.2010', $field->getDisplayedData()); } public function testBind_fromInput_timestamp() { $field = new DateField('name', array('widget' => 'input', 'type' => DateField::TIMESTAMP)); $field->setLocale('de_AT'); $field->bind('2.6.2010'); $dateTime = new \DateTime('2010-06-02 UTC'); $this->assertEquals($dateTime->format('U'), $field->getData()); $this->assertEquals('02.06.2010', $field->getDisplayedData()); } public function testBind_fromInput_raw() { $field = new DateField('name', array( 'data_timezone' => 'UTC', 'user_timezone' => 'UTC', 'widget' => 'input', 'type' => DateField::RAW, )); $field->setLocale('de_AT'); $field->bind('2.6.2010'); $output = array( 'day' => '2', 'month' => '6', 'year' => '2010', ); $this->assertEquals($output, $field->getData()); $this->assertEquals('02.06.2010', $field->getDisplayedData()); } public function testBind_fromChoice() { $field = new DateField('name', array('widget' => DateField::CHOICE)); $input = array( 'day' => '2', 'month' => '6', 'year' => '2010', ); $field->setLocale('de_AT'); $field->bind($input); $dateTime = new \DateTime('2010-06-02 UTC'); $this->assertDateTimeEquals($dateTime, $field->getData()); $this->assertEquals($input, $field->getDisplayedData()); } public function testSetData_differentTimezones() { $field = new DateField('name', array( 'data_timezone' => 'America/New_York', 'user_timezone' => 'Pacific/Tahiti', // don't do this test with DateTime, because it leads to wrong results! 'type' => DateField::STRING, 'widget' => 'input', )); $field->setLocale('de_AT'); $field->setData('2010-06-02'); $this->assertEquals('01.06.2010', $field->getDisplayedData()); } public function testRenderAsInput() { $field = new DateField('name', array('widget' => 'input')); $field->setLocale('de_AT'); $field->setData(new \DateTime('2010-06-02 UTC')); $html = ''; $this->assertEquals($html, $field->render(array( 'class' => 'foobar', ))); } public function testRenderAsInputWithFormat() { $field = new DateField('name', array('widget' => 'input', 'format' => 'short')); $field->setLocale('de_AT'); $field->setData(new \DateTime('2010-06-02 UTC')); $html = ''; $this->assertEquals($html, $field->render()); } public function testRenderAsChoice() { $field = new DateField('name', array( 'years' => array(2010, 2011), 'months' => array(6, 7), 'days' => array(1, 2), 'widget' => DateField::CHOICE, )); $field->setLocale('de_AT'); $field->setData(new \DateTime('2010-06-02 UTC')); $html = << .. EOF; $this->assertEquals($html, $field->render(array( 'class' => 'foobar', ))); } public function testRenderAsChoiceNonRequired() { $field = new DateField('name', array( 'years' => array(2010, 2011), 'months' => array(6, 7), 'days' => array(1, 2), 'widget' => DateField::CHOICE, )); $field->setLocale('de_AT'); $field->setRequired(false); $html = << .. EOF; $this->assertEquals($html, $field->render()); } public function testRenderAsChoiceWithPattern() { $field = new DateField('name', array( 'years' => array(2010, 2011), 'months' => array(6, 7), 'days' => array(1, 2), 'widget' => DateField::CHOICE, 'pattern' => '%day%---%month%---%year%', )); $field->setLocale('de_AT'); $html = << ------ EOF; $this->assertEquals($html, $field->render()); } }