This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
symfony/tests/Symfony/Tests/Component/Form/TimeFieldTest.php

399 lines
11 KiB
PHP

<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Tests\Component\Form;
require_once __DIR__ . '/DateTimeTestCase.php';
use Symfony\Component\Form\TimeField;
class TimeFieldTest extends DateTimeTestCase
{
public function testSubmit_dateTime()
{
$field = $this->factory->getTimeField('name', array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'type' => 'datetime',
));
$input = array(
'hour' => '3',
'minute' => '4',
);
$field->submit($input);
$dateTime = new \DateTime('1970-01-01 03:04:00 UTC');
$this->assertEquals($dateTime, $field->getData());
$this->assertEquals($input, $field->getDisplayedData());
}
public function testSubmit_string()
{
$field = $this->factory->getTimeField('name', array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'type' => 'string',
));
$input = array(
'hour' => '3',
'minute' => '4',
);
$field->submit($input);
$this->assertEquals('03:04:00', $field->getData());
$this->assertEquals($input, $field->getDisplayedData());
}
public function testSubmit_timestamp()
{
$field = $this->factory->getTimeField('name', array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'type' => 'timestamp',
));
$input = array(
'hour' => '3',
'minute' => '4',
);
$field->submit($input);
$dateTime = new \DateTime('1970-01-01 03:04:00 UTC');
$this->assertEquals($dateTime->format('U'), $field->getData());
$this->assertEquals($input, $field->getDisplayedData());
}
public function testSubmit_raw()
{
$field = $this->factory->getTimeField('name', array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'type' => 'raw',
));
$input = array(
'hour' => '3',
'minute' => '4',
);
$data = array(
'hour' => '3',
'minute' => '4',
);
$field->submit($input);
$this->assertEquals($data, $field->getData());
$this->assertEquals($input, $field->getDisplayedData());
}
public function testSetData_withSeconds()
{
$field = $this->factory->getTimeField('name', array(
'data_timezone' => 'UTC',
'user_timezone' => 'UTC',
'type' => 'datetime',
'with_seconds' => true,
));
$field->setData(new \DateTime('03:04:05 UTC'));
$this->assertEquals(array('hour' => 3, 'minute' => 4, 'second' => 5), $field->getDisplayedData());
}
public function testSetData_differentTimezones()
{
$field = $this->factory->getTimeField('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' => 'string',
'with_seconds' => true,
));
$dateTime = new \DateTime('03:04:05 America/New_York');
$field->setData($dateTime->format('H:i:s'));
$dateTime = clone $dateTime;
$dateTime->setTimezone(new \DateTimeZone('Pacific/Tahiti'));
$displayedData = array(
'hour' => (int)$dateTime->format('H'),
'minute' => (int)$dateTime->format('i'),
'second' => (int)$dateTime->format('s')
);
$this->assertEquals($displayedData, $field->getDisplayedData());
}
public function testIsHourWithinRange_returnsTrueIfWithin()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'hours' => array(6, 7),
));
$field->submit(array('hour' => '06', 'minute' => '12'));
$this->assertTrue($field->isHourWithinRange());
}
public function testIsHourWithinRange_returnsTrueIfEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'hours' => array(6, 7),
));
$field->submit(array('hour' => '', 'minute' => '06'));
$this->assertTrue($field->isHourWithinRange());
}
public function testIsHourWithinRange_returnsFalseIfNotContained()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'hours' => array(6, 7),
));
$field->submit(array('hour' => '08', 'minute' => '12'));
$this->assertFalse($field->isHourWithinRange());
}
public function testIsMinuteWithinRange_returnsTrueIfWithin()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'minutes' => array(6, 7),
));
$field->submit(array('hour' => '06', 'minute' => '06'));
$this->assertTrue($field->isMinuteWithinRange());
}
public function testIsMinuteWithinRange_returnsTrueIfEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'minutes' => array(6, 7),
));
$field->submit(array('hour' => '06', 'minute' => ''));
$this->assertTrue($field->isMinuteWithinRange());
}
public function testIsMinuteWithinRange_returnsFalseIfNotContained()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'minutes' => array(6, 7),
));
$field->submit(array('hour' => '06', 'minute' => '08'));
$this->assertFalse($field->isMinuteWithinRange());
}
public function testIsSecondWithinRange_returnsTrueIfWithin()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'seconds' => array(6, 7),
'with_seconds' => true,
));
$field->submit(array('hour' => '04', 'minute' => '05', 'second' => '06'));
$this->assertTrue($field->isSecondWithinRange());
}
public function testIsSecondWithinRange_returnsTrueIfEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'seconds' => array(6, 7),
'with_seconds' => true,
));
$field->submit(array('hour' => '06', 'minute' => '06', 'second' => ''));
$this->assertTrue($field->isSecondWithinRange());
}
public function testIsSecondWithinRange_returnsTrueIfNotWithSeconds()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'seconds' => array(6, 7),
));
$field->submit(array('hour' => '06', 'minute' => '06'));
$this->assertTrue($field->isSecondWithinRange());
}
public function testIsSecondWithinRange_returnsFalseIfNotContained()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'seconds' => array(6, 7),
'with_seconds' => true,
));
$field->submit(array('hour' => '04', 'minute' => '05', 'second' => '08'));
$this->assertFalse($field->isSecondWithinRange());
}
public function testIsPartiallyFilled_returnsFalseIfCompletelyEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
));
$field->submit(array(
'hour' => '',
'minute' => '',
));
$this->assertFalse($field->isPartiallyFilled());
}
public function testIsPartiallyFilled_returnsFalseIfCompletelyEmpty_withSeconds()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
'with_seconds' => true,
));
$field->submit(array(
'hour' => '',
'minute' => '',
'second' => '',
));
$this->assertFalse($field->isPartiallyFilled());
}
public function testIsPartiallyFilled_returnsFalseIfCompletelyFilled()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
));
$field->submit(array(
'hour' => '0',
'minute' => '0',
));
$this->assertFalse($field->isPartiallyFilled());
}
public function testIsPartiallyFilled_returnsFalseIfCompletelyFilled_withSeconds()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
'with_seconds' => true,
));
$field->submit(array(
'hour' => '0',
'minute' => '0',
'second' => '0',
));
$this->assertFalse($field->isPartiallyFilled());
}
public function testIsPartiallyFilled_returnsTrueIfChoiceAndHourEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
'with_seconds' => true,
));
$field->submit(array(
'hour' => '',
'minute' => '0',
'second' => '0',
));
$this->assertTrue($field->isPartiallyFilled());
}
public function testIsPartiallyFilled_returnsTrueIfChoiceAndMinuteEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
'with_seconds' => true,
));
$field->submit(array(
'hour' => '0',
'minute' => '',
'second' => '0',
));
$this->assertTrue($field->isPartiallyFilled());
}
public function testIsPartiallyFilled_returnsTrueIfChoiceAndSecondsEmpty()
{
$this->markTestSkipped('Needs to be reimplemented using validators');
$field = $this->factory->getTimeField('name', array(
'widget' => 'choice',
'with_seconds' => true,
));
$field->submit(array(
'hour' => '0',
'minute' => '0',
'second' => '',
));
$this->assertTrue($field->isPartiallyFilled());
}
}