@@ -265,6 +265,32 @@ class Request(betterproto.Message):
265265 assert Request ().parse (b"\n \x00 " ).flag is False
266266
267267
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+
268294def test_to_json_default_values ():
269295 @dataclass
270296 class TestMessage (betterproto .Message ):
0 commit comments