Passed
Push — master ( 4767ee...021155 )
by Davis
02:15
created

DatesConfigTest::testConstruct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 16
rs 9.7333
c 0
b 0
f 0
cc 1
nc 1
nop 7
1
<?php
2
3
namespace DavisPeixoto\ReportDates\Tests;
4
5
use DateTimeZone;
6
use DavisPeixoto\ReportDates\DatesConfig;
7
use DavisPeixoto\ReportDates\DayNumber;
8
use PHPUnit\Framework\TestCase;
9
10
class DatesConfigTest extends TestCase
11
{
12
    /**
13
     * @param DateTimeZone $timezone
14
     * @param DateTimeZone $expectedTimezone
15
     * @param DayNumber $weekStart
16
     * @param DayNumber $expectedWeekStart
17
     * @param DayNumber $expectedWeekEnd
18
     * @param DayNumber[] $businessDays
19
     * @param DayNumber[] $expectedBusinessDays
20
     *
21
     * @dataProvider constructProvider
22
     */
23
    public function testConstruct(
24
        $timezone,
25
        $expectedTimezone,
26
        $weekStart,
27
        $expectedWeekStart,
28
        $expectedWeekEnd,
29
        $businessDays,
30
        $expectedBusinessDays
31
    ) {
32
        $config = new DatesConfig($timezone, $weekStart, $businessDays);
33
34
        $this->assertEquals($expectedTimezone, $config->getTimezone());
35
        $this->assertEquals($expectedWeekStart, $config->getWeeksStartsOn());
36
        $this->assertEquals($expectedWeekEnd, $config->getWeeksEndsOn());
37
        $this->assertEquals($expectedBusinessDays, $config->getBusinessDays());
38
    }
39
40
    public static function constructProvider()
41
    {
42
        $tzDefault = new DateTimeZone('UTC');
43
        $tzSao = new DateTimeZone('America/Sao_Paulo');
44
45
        $wsDefault = new DayNumber(DayNumber::SUNDAY);
46
        $wsTuesday = new DayNumber(DayNumber::TUESDAY);
47
48
        $weDefault = new DayNumber(DayNumber::SATURDAY);
49
        $weMonday = new DayNumber(DayNumber::MONDAY);
50
51
        $bdDefault = [
52
            new DayNumber(DayNumber::MONDAY),
53
            new DayNumber(DayNumber::TUESDAY),
54
            new DayNumber(DayNumber::WEDNESDAY),
55
            new DayNumber(DayNumber::THURSDAY),
56
            new DayNumber(DayNumber::FRIDAY)
57
        ];
58
59
        $bdInformed1 = [
60
            new DayNumber(DayNumber::MONDAY),
61
            new DayNumber(DayNumber::TUESDAY),
62
            new DayNumber(DayNumber::WEDNESDAY),
63
            new DayNumber(DayNumber::THURSDAY),
64
            new DayNumber(DayNumber::FRIDAY),
65
            new DayNumber(DayNumber::SATURDAY)
66
        ];
67
68
        $bdInformed2 = [
69
            new DayNumber(DayNumber::TUESDAY),
70
            new DayNumber(DayNumber::WEDNESDAY),
71
            new DayNumber(DayNumber::THURSDAY)
72
        ];
73
74
        return [
75
            [null, $tzDefault, null, $wsDefault, $weDefault, null, $bdDefault],
76
            [$tzSao, $tzSao, null, $wsDefault, $weDefault, null, $bdDefault],
77
            [null, $tzDefault, $wsTuesday, $wsTuesday, $weMonday, null, $bdDefault],
78
            [$tzSao, $tzSao, $wsTuesday, $wsTuesday, $weMonday, null, $bdDefault],
79
            [null, $tzDefault, null, $wsDefault, $weDefault, $bdInformed1, $bdInformed1],
80
            [$tzSao, $tzSao, null, $wsDefault, $weDefault, $bdInformed2, $bdInformed2],
81
            [null, $tzDefault, $wsTuesday, $wsTuesday, $weMonday, $bdInformed1, $bdInformed1],
82
            [$tzSao, $tzSao, $wsTuesday, $wsTuesday, $weMonday, $bdInformed2, $bdInformed2]
83
84
        ];
85
    }
86
}
87