1
0
mirror of synced 2025-02-02 21:41:45 +03:00

Fix date calculation in tests (again)

Now using PHP to calculate the expected date manipulation, keeping a day
as delta since PHP resets the hour when performing operations with
days/weeks/months/years.

February is a wonderful month, isn't it?
This commit is contained in:
Luís Cobucci 2018-02-09 16:32:28 +01:00
parent 5149c0ff25
commit 46c0861f45
No known key found for this signature in database
GPG Key ID: EC61C5F01750ED3C

View File

@ -5,6 +5,7 @@ namespace Doctrine\Tests\ORM\Functional;
use Doctrine\ORM\AbstractQuery; use Doctrine\ORM\AbstractQuery;
use Doctrine\Tests\Models\Company\CompanyManager; use Doctrine\Tests\Models\Company\CompanyManager;
use Doctrine\Tests\OrmFunctionalTestCase; use Doctrine\Tests\OrmFunctionalTestCase;
use function sprintf;
/** /**
* Functional Query tests. * Functional Query tests.
@ -292,7 +293,7 @@ class QueryDqlFunctionTest extends OrmFunctionalTestCase
* *
* @dataProvider dateAddSubProvider * @dataProvider dateAddSubProvider
*/ */
public function testDateAdd(string $unit, int $amount, int $expectedValue, int $delta = 0) : void public function testDateAdd(string $unit, int $amount, int $delta = 0) : void
{ {
$query = sprintf( $query = sprintf(
'SELECT CURRENT_TIMESTAMP() as now, DATE_ADD(CURRENT_TIMESTAMP(), %d, \'%s\') AS add FROM %s m', 'SELECT CURRENT_TIMESTAMP() as now, DATE_ADD(CURRENT_TIMESTAMP(), %d, \'%s\') AS add FROM %s m',
@ -308,9 +309,12 @@ class QueryDqlFunctionTest extends OrmFunctionalTestCase
self::assertArrayHasKey('now', $result); self::assertArrayHasKey('now', $result);
self::assertArrayHasKey('add', $result); self::assertArrayHasKey('add', $result);
$diff = strtotime($result['add']) - strtotime($result['now']); self::assertEquals(
(new \DateTimeImmutable($result['now']))->modify(sprintf('+%d %s', $amount, $unit)),
self::assertEquals($expectedValue, $diff, '', $delta); new \DateTimeImmutable($result['add']),
'',
$delta
);
} }
/** /**
@ -319,7 +323,7 @@ class QueryDqlFunctionTest extends OrmFunctionalTestCase
* *
* @dataProvider dateAddSubProvider * @dataProvider dateAddSubProvider
*/ */
public function testDateSub(string $unit, int $amount, int $expectedValue, int $delta = 0) : void public function testDateSub(string $unit, int $amount, int $delta = 0) : void
{ {
$query = sprintf( $query = sprintf(
'SELECT CURRENT_TIMESTAMP() as now, DATE_SUB(CURRENT_TIMESTAMP(), %d, \'%s\') AS sub FROM %s m', 'SELECT CURRENT_TIMESTAMP() as now, DATE_SUB(CURRENT_TIMESTAMP(), %d, \'%s\') AS sub FROM %s m',
@ -335,9 +339,12 @@ class QueryDqlFunctionTest extends OrmFunctionalTestCase
self::assertArrayHasKey('now', $result); self::assertArrayHasKey('now', $result);
self::assertArrayHasKey('sub', $result); self::assertArrayHasKey('sub', $result);
$diff = strtotime($result['now']) - strtotime($result['sub']); self::assertEquals(
(new \DateTimeImmutable($result['now']))->modify(sprintf('-%d %s', $amount, $unit)),
self::assertEquals($expectedValue, $diff, '', $delta); new \DateTimeImmutable($result['sub']),
'',
$delta
);
} }
public function dateAddSubProvider() : array public function dateAddSubProvider() : array
@ -345,9 +352,9 @@ class QueryDqlFunctionTest extends OrmFunctionalTestCase
$secondsInDay = 86400; $secondsInDay = 86400;
return [ return [
'year' => ['year', 1, 365 * $secondsInDay, 3 * $secondsInDay], 'year' => ['year', 1, $secondsInDay],
'month' => ['month', 1, 30 * $secondsInDay, 2.5 * $secondsInDay], 'month' => ['month', 1, $secondsInDay],
'week' => ['week', 1, 7 * $secondsInDay, $secondsInDay], 'week' => ['week', 1, $secondsInDay],
'hour' => ['hour', 1, 3600], 'hour' => ['hour', 1, 3600],
'minute' => ['minute', 1, 60], 'minute' => ['minute', 1, 60],
'second' => ['second', 10, 10], 'second' => ['second', 10, 10],