The date time format can be chosen in application settings

This commit is contained in:
Frederic Guillot
2016-02-06 18:08:41 -05:00
parent fc785bbbf6
commit 58cef28967
69 changed files with 597 additions and 623 deletions

View File

@@ -6,79 +6,167 @@ use Kanboard\Core\DateParser;
class DateParserTest extends Base
{
public function testDateRange()
public function testGetTimeFormats()
{
$d = new DateParser($this->container);
$this->assertTrue($d->withinDateRange(new DateTime('2015-03-14 15:30:00'), new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 16:00:00')));
$this->assertFalse($d->withinDateRange(new DateTime('2015-03-14 15:30:00'), new DateTime('2015-03-14 16:00:00'), new DateTime('2015-03-14 17:00:00')));
$dateParser = new DateParser($this->container);
$this->assertCount(2, $dateParser->getTimeFormats());
$this->assertContains('H:i', $dateParser->getTimeFormats());
$this->assertContains('g:i a', $dateParser->getTimeFormats());
}
public function testRoundSeconds()
public function testGetDateFormats()
{
$d = new DateParser($this->container);
$this->assertEquals('16:30', date('H:i', $d->getRoundedSeconds(strtotime('16:28'))));
$this->assertEquals('16:00', date('H:i', $d->getRoundedSeconds(strtotime('16:02'))));
$this->assertEquals('16:15', date('H:i', $d->getRoundedSeconds(strtotime('16:14'))));
$this->assertEquals('17:00', date('H:i', $d->getRoundedSeconds(strtotime('16:58'))));
$dateParser = new DateParser($this->container);
$this->assertCount(4, $dateParser->getDateFormats());
$this->assertCount(6, $dateParser->getDateFormats(true));
$this->assertContains('d/m/Y', $dateParser->getDateFormats());
$this->assertNotContains('Y-m-d', $dateParser->getDateFormats());
$this->assertContains('Y-m-d', $dateParser->getDateFormats(true));
}
public function testGetHours()
public function testGetDateTimeFormats()
{
$d = new DateParser($this->container);
$this->assertEquals(1, $d->getHours(new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 16:00:00')));
$this->assertEquals(2.5, $d->getHours(new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 17:30:00')));
$this->assertEquals(2.75, $d->getHours(new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 17:45:00')));
$this->assertEquals(3, $d->getHours(new DateTime('2015-03-14 14:57:00'), new DateTime('2015-03-14 17:58:00')));
$this->assertEquals(3, $d->getHours(new DateTime('2015-03-14 14:57:00'), new DateTime('2015-03-14 11:58:00')));
$dateParser = new DateParser($this->container);
$this->assertCount(8, $dateParser->getDateTimeFormats());
$this->assertCount(12, $dateParser->getDateTimeFormats(true));
$this->assertContains('d/m/Y H:i', $dateParser->getDateTimeFormats());
$this->assertNotContains('Y-m-d H:i', $dateParser->getDateTimeFormats());
$this->assertContains('Y-m-d g:i a', $dateParser->getDateTimeFormats(true));
}
public function testValidDate()
public function testGetAllDateFormats()
{
$d = new DateParser($this->container);
$dateParser = new DateParser($this->container);
$this->assertCount(12, $dateParser->getAllDateFormats());
$this->assertCount(18, $dateParser->getAllDateFormats(true));
$this->assertContains('d/m/Y', $dateParser->getAllDateFormats());
$this->assertContains('d/m/Y H:i', $dateParser->getAllDateFormats());
$this->assertNotContains('Y-m-d H:i', $dateParser->getAllDateFormats());
$this->assertContains('Y-m-d g:i a', $dateParser->getAllDateFormats(true));
$this->assertContains('Y-m-d', $dateParser->getAllDateFormats(true));
}
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('2014-03-05', 'Y-m-d')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('2014_03_05', 'Y_m_d')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('05/03/2014', 'd/m/Y')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('03/05/2014', 'm/d/Y')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('3/5/2014', 'm/d/Y')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('5/3/2014', 'd/m/Y')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getValidDate('5/3/14', 'd/m/y')));
$this->assertEquals(0, $d->getValidDate('5/3/14', 'd/m/Y'));
$this->assertEquals(0, $d->getValidDate('5-3-2014', 'd/m/Y'));
public function testGetAllAvailableFormats()
{
$dateParser = new DateParser($this->container);
$formats = $dateParser->getAvailableFormats($dateParser->getDateFormats());
$this->assertArrayHasKey('d/m/Y', $formats);
$this->assertContains(date('d/m/Y'), $formats);
$formats = $dateParser->getAvailableFormats($dateParser->getDateTimeFormats());
$this->assertArrayHasKey('d/m/Y H:i', $formats);
$this->assertContains(date('d/m/Y H:i'), $formats);
$formats = $dateParser->getAvailableFormats($dateParser->getAllDateFormats());
$this->assertArrayHasKey('d/m/Y', $formats);
$this->assertContains(date('d/m/Y'), $formats);
$this->assertArrayHasKey('d/m/Y H:i', $formats);
$this->assertContains(date('d/m/Y H:i'), $formats);
}
public function testGetTimestamp()
{
$d = new DateParser($this->container);
$dateParser = new DateParser($this->container);
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getTimestamp('2014-03-05')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getTimestamp('2014_03_05')));
$this->assertEquals('2014-03-05', date('Y-m-d', $d->getTimestamp('03/05/2014')));
$this->assertEquals('2014-03-25 17:18', date('Y-m-d H:i', $d->getTimestamp('03/25/2014 5:18 pm')));
$this->assertEquals('2014-03-25 05:18', date('Y-m-d H:i', $d->getTimestamp('03/25/2014 5:18 am')));
$this->assertEquals('2014-03-25 05:18', date('Y-m-d H:i', $d->getTimestamp('03/25/2014 5:18am')));
$this->assertEquals('2014-03-25 23:14', date('Y-m-d H:i', $d->getTimestamp('03/25/2014 23:14')));
$this->assertEquals('2014-03-29 23:14', date('Y-m-d H:i', $d->getTimestamp('2014_03_29 23:14')));
$this->assertEquals('2014-03-29 23:14', date('Y-m-d H:i', $d->getTimestamp('2014-03-29 23:14')));
$this->assertEquals(1393995600, $dateParser->getTimestamp(1393995600));
$this->assertEquals('2014-03-05', date('Y-m-d', $dateParser->getTimestamp('2014-03-05')));
$this->assertEquals('2014-03-05', date('Y-m-d', $dateParser->getTimestamp('2014_03_05')));
$this->assertEquals('2014-03-05', date('Y-m-d', $dateParser->getTimestamp('03/05/2014')));
$this->assertEquals('2014-03-25 17:18', date('Y-m-d H:i', $dateParser->getTimestamp('03/25/2014 5:18 pm')));
$this->assertEquals('2014-03-25 05:18', date('Y-m-d H:i', $dateParser->getTimestamp('03/25/2014 5:18 am')));
$this->assertEquals('2014-03-25 17:18', date('Y-m-d H:i', $dateParser->getTimestamp('03/25/2014 5:18pm')));
$this->assertEquals('2014-03-25 23:14', date('Y-m-d H:i', $dateParser->getTimestamp('03/25/2014 23:14')));
$this->assertEquals('2014-03-29 23:14', date('Y-m-d H:i', $dateParser->getTimestamp('2014_03_29 23:14')));
$this->assertEquals('2014-03-29 23:14', date('Y-m-d H:i', $dateParser->getTimestamp('2014-03-29 23:14')));
}
public function testDateRange()
{
$dateParser = new DateParser($this->container);
$this->assertTrue($dateParser->withinDateRange(new DateTime('2015-03-14 15:30:00'), new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 16:00:00')));
$this->assertFalse($dateParser->withinDateRange(new DateTime('2015-03-14 15:30:00'), new DateTime('2015-03-14 16:00:00'), new DateTime('2015-03-14 17:00:00')));
}
public function testGetHours()
{
$dateParser = new DateParser($this->container);
$this->assertEquals(1, $dateParser->getHours(new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 16:00:00')));
$this->assertEquals(2.5, $dateParser->getHours(new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 17:30:00')));
$this->assertEquals(2.75, $dateParser->getHours(new DateTime('2015-03-14 15:00:00'), new DateTime('2015-03-14 17:45:00')));
$this->assertEquals(3, $dateParser->getHours(new DateTime('2015-03-14 14:57:00'), new DateTime('2015-03-14 17:58:00')));
$this->assertEquals(3, $dateParser->getHours(new DateTime('2015-03-14 14:57:00'), new DateTime('2015-03-14 11:58:00')));
}
public function testRoundSeconds()
{
$dateParser = new DateParser($this->container);
$this->assertEquals('16:30', date('H:i', $dateParser->getRoundedSeconds(strtotime('16:28'))));
$this->assertEquals('16:00', date('H:i', $dateParser->getRoundedSeconds(strtotime('16:02'))));
$this->assertEquals('16:15', date('H:i', $dateParser->getRoundedSeconds(strtotime('16:14'))));
$this->assertEquals('17:00', date('H:i', $dateParser->getRoundedSeconds(strtotime('16:58'))));
}
public function testGetIsoDate()
{
$dateParser = new DateParser($this->container);
$this->assertEquals('2016-02-06', $dateParser->getIsoDate(1454786217));
$this->assertEquals('2014-03-05', $dateParser->getIsoDate('2014-03-05'));
$this->assertEquals('2014-03-05', $dateParser->getIsoDate('2014_03_05'));
$this->assertEquals('2014-03-05', $dateParser->getIsoDate('03/05/2014'));
$this->assertEquals('2014-03-25', $dateParser->getIsoDate('03/25/2014 5:18 pm'));
$this->assertEquals('2014-03-25', $dateParser->getIsoDate('03/25/2014 5:18 am'));
$this->assertEquals('2014-03-25', $dateParser->getIsoDate('03/25/2014 5:18pm'));
$this->assertEquals('2014-03-25', $dateParser->getIsoDate('03/25/2014 23:14'));
$this->assertEquals('2014-03-29', $dateParser->getIsoDate('2014_03_29 23:14'));
$this->assertEquals('2014-03-29', $dateParser->getIsoDate('2014-03-29 23:14'));
}
public function testGetTimestampFromIsoFormat()
{
$dateParser = new DateParser($this->container);
$this->assertEquals('2014-03-05 00:00', date('Y-m-d H:i', $dateParser->getTimestampFromIsoFormat('2014-03-05')));
$this->assertEquals(date('Y-m-d 00:00', strtotime('+2 days')), date('Y-m-d H:i', $dateParser->getTimestampFromIsoFormat(strtotime('+2 days'))));
}
public function testRemoveTimeFromTimestamp()
{
$dateParser = new DateParser($this->container);
$this->assertEquals('2016-02-06 00:00', date('Y-m-d H:i', $dateParser->removeTimeFromTimestamp(1454786217)));
}
public function testFormat()
{
$dateParser = new DateParser($this->container);
$values['date'] = '1454787006';
$this->assertEquals(array('date' => '06/02/2016'), $dateParser->format($values, array('date'), 'd/m/Y'));
$this->assertEquals(array('date' => '02/06/2016 7:30 pm'), $dateParser->format($values, array('date'), 'm/d/Y g:i a'));
}
public function testConvert()
{
$d = new DateParser($this->container);
$dateParser = new DateParser($this->container);
$values = array(
'date_due' => '2015-01-25',
'date_started' => '2015_01_25',
'date_started' => '2015-01-25 17:25',
);
$d->convert($values, array('date_due', 'date_started'));
$this->assertEquals(
array('date_due' => 1422144000, 'date_started' => 1422144000),
$dateParser->convert($values, array('date_due', 'date_started'))
);
$this->assertEquals(mktime(0, 0, 0, 1, 25, 2015), $values['date_due']);
$this->assertEquals('2015-01-25', date('Y-m-d', $values['date_due']));
$values = array(
'date_started' => '2015-01-25 17:25',
);
$this->assertEquals(mktime(0, 0, 0, 1, 25, 2015), $values['date_started']);
$this->assertEquals('2015-01-25', date('Y-m-d', $values['date_started']));
$this->assertEquals(
array('date_started' => 1422206700),
$dateParser->convert($values, array('date_due', 'date_started'), true)
);
}
}