DateTest   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 7
dl 0
loc 53
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testGetWeekDay() 0 4 1
A dataProvider() 0 9 1
A testCreateWorkday() 0 4 1
A testCreateWeekend() 0 5 1
A testCreateNow() 0 9 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Itmedia\ZippyBusBundle\Tests\Schedule;
6
7
use Itmedia\ZippyBusBundle\Schedule\ScheduleDate;
8
use PHPUnit\Framework\TestCase;
9
10
class DateTest extends TestCase
11
{
12
13
    /**
14
     * @dataProvider dataProvider
15
     *
16
     * @param string $dateString
17
     * @param int $day
18
     */
19
    public function testGetWeekDay(string $dateString, int $day)
20
    {
21
        $date = new ScheduleDate(new \DateTimeImmutable($dateString));
22
        $this->assertEquals($day, $date->getWeekDay());
23
    }
24
25
26
    public function dataProvider()
27
    {
28
        return [
29
            ['28.08.2017 12:00', 1],
30
            ['28.08.2017 1:00', 7],
31
            ['28.08.2017 3:35', 7],
32
            ['27.08.2017 4:35', 7],
33
            ['29.08.2017 1:35', 1],
34
            ['29.08.2017 12:35', 2],
35
        ];
36
    }
37
38
39
    public function testCreateNow()
40
    {
41
        $date = ScheduleDate::createNow();
42
        $actualDayNumber = (int)date('N');
43
        if (date('H') < 4) {
44
            $actualDayNumber = $actualDayNumber === 1 ? 7 : $actualDayNumber - 1;
45
        }
46
47
        $this->assertEquals($actualDayNumber, $date->getWeekDay());
48
    }
49
50
51
    public function testCreateWeekend()
52
    {
53
        $date = ScheduleDate::createWeekend();
54
        $this->assertEquals(7, $date->getWeekDay());
55
        $this->assertTrue($date->isWeekend());
56
    }
57
58
59
    public function testCreateWorkday()
60
    {
61
        $date = ScheduleDate::createWorkday();
62
        $this->assertFalse($date->isWeekend());
63
    }
64
}
65