@@ -265,6 +265,32 @@ class Request(betterproto.Message):
265
265
assert Request ().parse (b"\n \x00 " ).flag is False
266
266
267
267
268
+ def test_optional_datetime_to_dict ():
269
+ @dataclass
270
+ class Request (betterproto .Message ):
271
+ date : Optional [datetime ] = betterproto .message_field (1 , optional = True )
272
+
273
+ # Check dict serialization
274
+ assert Request ().to_dict () == {}
275
+ assert Request ().to_dict (include_default_values = True ) == {"date" : None }
276
+ assert Request (date = datetime (2020 , 1 , 1 )).to_dict () == {
277
+ "date" : "2020-01-01T00:00:00Z"
278
+ }
279
+ assert Request (date = datetime (2020 , 1 , 1 )).to_dict (include_default_values = True ) == {
280
+ "date" : "2020-01-01T00:00:00Z"
281
+ }
282
+
283
+ # Check pydict serialization
284
+ assert Request ().to_pydict () == {}
285
+ assert Request ().to_pydict (include_default_values = True ) == {"date" : None }
286
+ assert Request (date = datetime (2020 , 1 , 1 )).to_pydict () == {
287
+ "date" : datetime (2020 , 1 , 1 )
288
+ }
289
+ assert Request (date = datetime (2020 , 1 , 1 )).to_pydict (
290
+ include_default_values = True
291
+ ) == {"date" : datetime (2020 , 1 , 1 )}
292
+
293
+
268
294
def test_to_json_default_values ():
269
295
@dataclass
270
296
class TestMessage (betterproto .Message ):
0 commit comments