DateTest.php 1.58 KB
Newer Older
1 2
<?php

3
namespace Doctrine\DBAL\Tests\Types;
4

Sergei Morozov's avatar
Sergei Morozov committed
5
use DateTime;
Sergei Morozov's avatar
Sergei Morozov committed
6
use Doctrine\DBAL\Types\ConversionException;
7
use Doctrine\DBAL\Types\Type;
8

9
use function date_default_timezone_set;
10

11
class DateTest extends BaseDateTypeTestCase
12
{
13
    protected function setUp(): void
14
    {
15
        $this->type = Type::getType('date');
16

17
        parent::setUp();
18 19
    }

20
    public function testDateConvertsToPHPValue(): void
21 22
    {
        // Birthday of jwage and also birthday of Doctrine. Send him a present ;)
Gabriel Caruso's avatar
Gabriel Caruso committed
23
        self::assertInstanceOf(
Sergei Morozov's avatar
Sergei Morozov committed
24
            DateTime::class,
25
            $this->type->convertToPHPValue('1985-09-01', $this->platform)
26 27
        );
    }
28

29
    public function testDateResetsNonDatePartsToZeroUnixTimeValues(): void
30
    {
31
        $date = $this->type->convertToPHPValue('1985-09-01', $this->platform);
32

33
        self::assertEquals('00:00:00', $date->format('H:i:s'));
34
    }
35

36
    public function testDateRestsSummerTimeAffection(): void
37 38 39
    {
        date_default_timezone_set('Europe/Berlin');

40
        $date = $this->type->convertToPHPValue('2009-08-01', $this->platform);
41 42
        self::assertEquals('00:00:00', $date->format('H:i:s'));
        self::assertEquals('2009-08-01', $date->format('Y-m-d'));
43

44
        $date = $this->type->convertToPHPValue('2009-11-01', $this->platform);
45 46
        self::assertEquals('00:00:00', $date->format('H:i:s'));
        self::assertEquals('2009-11-01', $date->format('Y-m-d'));
47
    }
48

49
    public function testInvalidDateFormatConversion(): void
50
    {
Sergei Morozov's avatar
Sergei Morozov committed
51
        $this->expectException(ConversionException::class);
52
        $this->type->convertToPHPValue('abcdefg', $this->platform);
53
    }
54
}