@@ -11,4 +11,65 @@ public function testCanInstantiate() : void
1111 $ i = new Dashboard ();
1212 self ::assertTrue ($ i instanceof Dashboard);
1313 }
14+
15+ public function testGetFirstDayOfCurrentWeekWithWeekStartOnSunday (): void
16+ {
17+ $ i = new Dashboard ();
18+
19+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-05 ' ), 0 ));
20+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-06 ' ), 0 ));
21+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-07 ' ), 0 ));
22+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-08 ' ), 0 ));
23+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-09 ' ), 0 ));
24+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-10 ' ), 0 ));
25+ self ::assertEquals (new \DateTimeImmutable ('2025-01-05 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-11 ' ), 0 ));
26+ self ::assertEquals (new \DateTimeImmutable ('2025-01-12 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-12 ' ), 0 ));
27+ }
28+
29+ public function testGetFirstDayOfCurrentWeekWithWeekStartOnMonday (): void
30+ {
31+ $ i = new Dashboard ();
32+ self ::assertEquals (new \DateTimeImmutable ('2024-12-30 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-05 ' ), 1 ));
33+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-06 ' ), 1 ));
34+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-07 ' ), 1 ));
35+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-08 ' ), 1 ));
36+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-09 ' ), 1 ));
37+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-10 ' ), 1 ));
38+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-11 ' ), 1 ));
39+ self ::assertEquals (new \DateTimeImmutable ('2025-01-06 ' ), $ i ->get_first_day_of_current_week (new DateTimeImmutable ('2025-01-12 ' ), 1 ));
40+ }
41+
42+ public function testGetDatesForRangeThisWeekWithWeekStartOnSunday (): void
43+ {
44+ $ i = new Dashboard ();
45+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-05 ' ), 'this_week ' , 0 ));
46+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-06 ' ), 'this_week ' , 0 ));
47+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-07 ' ), 'this_week ' , 0 ));
48+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-08 ' ), 'this_week ' , 0 ));
49+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-09 ' ), 'this_week ' , 0 ));
50+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-10 ' ), 'this_week ' , 0 ));
51+ self ::assertEquals ([new DateTimeImmutable ('2025-01-05 ' ), new DateTimeImmutable ('2025-01-11 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-11 ' ), 'this_week ' , 0 ));
52+ self ::assertEquals ([new DateTimeImmutable ('2025-01-12 ' ), new DateTimeImmutable ('2025-01-18 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-12 ' ), 'this_week ' , 0 ));
53+ }
54+
55+ public function testGetDatesForRangeThisWeekWithWeekStartOnMonday (): void
56+ {
57+ $ i = new Dashboard ();
58+ self ::assertEquals ([new DateTimeImmutable ('2024-12-30 ' ), new DateTimeImmutable ('2025-01-05 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-05 ' ), 'this_week ' , 1 ));
59+ self ::assertEquals ([new DateTimeImmutable ('2025-01-06 ' ), new DateTimeImmutable ('2025-01-12 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-06 ' ), 'this_week ' , 1 ));
60+ }
61+
62+ public function testGetDatesForRangeLastWeekWithWeekStartOnSunday (): void
63+ {
64+ $ i = new Dashboard ();
65+ self ::assertEquals ([new DateTimeImmutable ('2024-12-29 ' ), new DateTimeImmutable ('2025-01-04 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-05 ' ), 'last_week ' , 0 ));
66+ self ::assertEquals ([new DateTimeImmutable ('2024-12-29 ' ), new DateTimeImmutable ('2025-01-04 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-06 ' ), 'last_week ' , 0 ));
67+ }
68+
69+ public function testGetDatesForRangeLastWeekWithWeekStartOnMonday (): void
70+ {
71+ $ i = new Dashboard ();
72+ self ::assertEquals ([new DateTimeImmutable ('2024-12-23 ' ), new DateTimeImmutable ('2024-12-29 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-05 ' ), 'last_week ' , 1 ));
73+ self ::assertEquals ([new DateTimeImmutable ('2024-12-30 ' ), new DateTimeImmutable ('2025-01-05 23:59:59 ' )], $ i ->get_dates_for_range (new DateTimeImmutable ('2025-01-06 ' ), 'last_week ' , 1 ));
74+ }
1475}
0 commit comments