@@ -65,15 +65,16 @@ public function testFullDate(string $timezone)
65
65
$ resolver = new DateTimeValueResolver ();
66
66
67
67
$ argument = new ArgumentMetadata ('dummy ' , \DateTime::class, false , false , null );
68
- $ request = self ::requestWithAttributes (['dummy ' => '2012-07-21 00:00:00+0000 ' ]);
68
+ $ request = self ::requestWithAttributes (['dummy ' => '2012-07-21 00:00:00 ' ]);
69
69
70
70
/** @var \Generator $results */
71
71
$ results = $ resolver ->resolve ($ request , $ argument );
72
72
$ results = iterator_to_array ($ results );
73
73
74
74
$ this ->assertCount (1 , $ results );
75
75
$ this ->assertInstanceOf (\DateTime::class, $ results [0 ]);
76
- $ this ->assertEquals ('2012-07-21 ' , $ results [0 ]->format ('Y-m-d ' ));
76
+ $ this ->assertSame ($ timezone , $ results [0 ]->getTimezone ()->getName (), 'Default timezone ' );
77
+ $ this ->assertEquals ('2012-07-21 00:00:00 ' , $ results [0 ]->format ('Y-m-d H:i:s ' ));
77
78
}
78
79
79
80
/**
@@ -93,7 +94,8 @@ public function testUnixTimestamp(string $timezone)
93
94
94
95
$ this ->assertCount (1 , $ results );
95
96
$ this ->assertInstanceOf (\DateTime::class, $ results [0 ]);
96
- $ this ->assertEquals ('2001-05-11 ' , $ results [0 ]->format ('Y-m-d ' ));
97
+ $ this ->assertSame ('+00:00 ' , $ results [0 ]->getTimezone ()->getName (), 'Timestamps are UTC ' );
98
+ $ this ->assertEquals ('2001-05-11 00:42:00 ' , $ results [0 ]->format ('Y-m-d H:i:s ' ));
97
99
}
98
100
99
101
public function testNullableWithEmptyAttribute ()
@@ -125,7 +127,7 @@ public function testCustomClass()
125
127
126
128
$ this ->assertCount (1 , $ results );
127
129
$ this ->assertInstanceOf (FooDateTime::class, $ results [0 ]);
128
- $ this ->assertEquals ('2016-09-08 ' , $ results [0 ]->format ('Y-m-d ' ));
130
+ $ this ->assertEquals ('2016-09-08 00:00:00+00:00 ' , $ results [0 ]->format ('Y-m-d H:i:sP ' ));
129
131
}
130
132
131
133
/**
@@ -137,23 +139,47 @@ public function testDateTimeImmutable(string $timezone)
137
139
$ resolver = new DateTimeValueResolver ();
138
140
139
141
$ argument = new ArgumentMetadata ('dummy ' , \DateTimeImmutable::class, false , false , null );
140
- $ request = self ::requestWithAttributes (['dummy ' => '2016-09-08 00:00:00+0000 ' ]);
142
+ $ request = self ::requestWithAttributes (['dummy ' => '2016-09-08 00:00:00 +05:00 ' ]);
141
143
142
144
/** @var \Generator $results */
143
145
$ results = $ resolver ->resolve ($ request , $ argument );
144
146
$ results = iterator_to_array ($ results );
145
147
146
148
$ this ->assertCount (1 , $ results );
147
149
$ this ->assertInstanceOf (\DateTimeImmutable::class, $ results [0 ]);
148
- $ this ->assertEquals ('2016-09-08 ' , $ results [0 ]->format ('Y-m-d ' ));
150
+ $ this ->assertSame ('+05:00 ' , $ results [0 ]->getTimezone ()->getName (), 'Input timezone ' );
151
+ $ this ->assertEquals ('2016-09-08 00:00:00 ' , $ results [0 ]->format ('Y-m-d H:i:s ' ));
152
+ }
153
+
154
+ /**
155
+ * @dataProvider getTimeZones
156
+ */
157
+ public function testWithFormat (string $ timezone )
158
+ {
159
+ date_default_timezone_set ($ timezone );
160
+ $ resolver = new DateTimeValueResolver ();
161
+
162
+ $ argument = new ArgumentMetadata ('dummy ' , \DateTimeInterface::class, false , false , null , false , [
163
+ MapDateTime::class => new MapDateTime ('m-d-y H:i:s ' ),
164
+ ]);
165
+ $ request = self ::requestWithAttributes (['dummy ' => '09-08-16 12:34:56 ' ]);
166
+
167
+ /** @var \Generator $results */
168
+ $ results = $ resolver ->resolve ($ request , $ argument );
169
+ $ results = iterator_to_array ($ results );
170
+
171
+ $ this ->assertCount (1 , $ results );
172
+ $ this ->assertInstanceOf (\DateTimeImmutable::class, $ results [0 ]);
173
+ $ this ->assertSame ($ timezone , $ results [0 ]->getTimezone ()->getName (), 'Default timezone ' );
174
+ $ this ->assertEquals ('2016-09-08 12:34:56 ' , $ results [0 ]->format ('Y-m-d H:i:s ' ));
149
175
}
150
176
151
177
public function provideInvalidDates ()
152
178
{
153
179
return [
154
180
'invalid date ' => [
155
181
new ArgumentMetadata ('dummy ' , \DateTime::class, false , false , null ),
156
- self ::requestWithAttributes (['dummy ' => 'Invalid DateTime Format ' ])
182
+ self ::requestWithAttributes (['dummy ' => 'Invalid DateTime Format ' ]),
157
183
],
158
184
'invalid format ' => [
159
185
new ArgumentMetadata ('dummy ' , \DateTime::class, false , false , null , false , [new MapDateTime (format: 'd.m.Y ' )]),
0 commit comments