20
20
21
21
class DateTimeValueResolverTest extends TestCase
22
22
{
23
+ private $ defaultTimezone ;
24
+
25
+ public function getTimeZones ()
26
+ {
27
+ yield ['UTC ' ];
28
+ yield ['Etc/GMT+9 ' ];
29
+ yield ['Etc/GMT-14 ' ];
30
+ }
31
+
23
32
public function testSupports ()
24
33
{
25
34
$ resolver = new DateTimeValueResolver ();
@@ -37,12 +46,16 @@ public function testSupports()
37
46
$ this ->assertFalse ($ resolver ->supports ($ request , $ argument ));
38
47
}
39
48
40
- public function testFullDate ()
49
+ /**
50
+ * @dataProvider getTimeZones
51
+ */
52
+ public function testFullDate (string $ timezone )
41
53
{
54
+ date_default_timezone_set ($ timezone );
42
55
$ resolver = new DateTimeValueResolver ();
43
56
44
57
$ argument = new ArgumentMetadata ('dummy ' , \DateTime::class, false , false , null );
45
- $ request = self ::requestWithAttributes (['dummy ' => '2012-07-21 00:00:00 ' ]);
58
+ $ request = self ::requestWithAttributes (['dummy ' => '2012-07-21 00:00:00+0000 ' ]);
46
59
47
60
/** @var \Generator $results */
48
61
$ results = $ resolver ->resolve ($ request , $ argument );
@@ -53,8 +66,12 @@ public function testFullDate()
53
66
$ this ->assertEquals ('2012-07-21 ' , $ results [0 ]->format ('Y-m-d ' ));
54
67
}
55
68
56
- public function testUnixTimestamp ()
69
+ /**
70
+ * @dataProvider getTimeZones
71
+ */
72
+ public function testUnixTimestamp (string $ timezone )
57
73
{
74
+ date_default_timezone_set ($ timezone );
58
75
$ resolver = new DateTimeValueResolver ();
59
76
60
77
$ argument = new ArgumentMetadata ('dummy ' , \DateTime::class, false , false , null );
@@ -84,12 +101,16 @@ public function testNullableWithEmptyAttribute()
84
101
$ this ->assertNull ($ results [0 ]);
85
102
}
86
103
87
- public function testCustomClass ()
104
+ /**
105
+ * @dataProvider getTimeZones
106
+ */
107
+ public function testCustomClass (string $ timezone )
88
108
{
109
+ date_default_timezone_set ($ timezone );
89
110
$ resolver = new DateTimeValueResolver ();
90
111
91
112
$ argument = new ArgumentMetadata ('dummy ' , FooDateTime::class, false , false , null );
92
- $ request = self ::requestWithAttributes (['dummy ' => '2016-09-08 00:00:00 ' ]);
113
+ $ request = self ::requestWithAttributes (['dummy ' => '2016-09-08 00:00:00+0000 ' ]);
93
114
94
115
/** @var \Generator $results */
95
116
$ results = $ resolver ->resolve ($ request , $ argument );
@@ -100,12 +121,16 @@ public function testCustomClass()
100
121
$ this ->assertEquals ('2016-09-08 ' , $ results [0 ]->format ('Y-m-d ' ));
101
122
}
102
123
103
- public function testDateTimeImmutable ()
124
+ /**
125
+ * @dataProvider getTimeZones
126
+ */
127
+ public function testDateTimeImmutable (string $ timezone )
104
128
{
129
+ date_default_timezone_set ($ timezone );
105
130
$ resolver = new DateTimeValueResolver ();
106
131
107
132
$ argument = new ArgumentMetadata ('dummy ' , \DateTimeImmutable::class, false , false , null );
108
- $ request = self ::requestWithAttributes (['dummy ' => '2016-09-08 00:00:00 ' ]);
133
+ $ request = self ::requestWithAttributes (['dummy ' => '2016-09-08 00:00:00+0000 ' ]);
109
134
110
135
/** @var \Generator $results */
111
136
$ results = $ resolver ->resolve ($ request , $ argument );
@@ -149,6 +174,16 @@ public function test404Exception(ArgumentMetadata $argument, Request $request)
149
174
iterator_to_array ($ results );
150
175
}
151
176
177
+ protected function setUp (): void
178
+ {
179
+ $ this ->defaultTimezone = date_default_timezone_get ();
180
+ }
181
+
182
+ protected function tearDown (): void
183
+ {
184
+ date_default_timezone_set ($ this ->defaultTimezone );
185
+ }
186
+
152
187
private static function requestWithAttributes (array $ attributes ): Request
153
188
{
154
189
$ request = Request::create ('/ ' );
0 commit comments