11from dataclasses import dataclass
22from test .unit .base import ClientBaseCase
3- from typing import Optional
3+ from typing import Optional , Union
44
5- from linode_api4 import Base , JSONObject , Property
5+ from linode_api4 import Base , ExplicitNullValue , JSONObject , Property
66
77
88class JSONObjectTest (ClientBaseCase ):
@@ -14,18 +14,21 @@ class Foo(JSONObject):
1414 foo : Optional [str ] = None
1515 bar : Optional [str ] = None
1616 baz : str = None
17+ foobar : Union [str , ExplicitNullValue , None ] = None
1718
1819 foo = Foo ().dict
1920
2021 assert foo ["foo" ] is None
2122 assert "bar" not in foo
2223 assert foo ["baz" ] is None
24+ assert "foobar" not in foo
2325
24- foo = Foo (foo = "test" , bar = "test2" , baz = "test3" ).dict
26+ foo = Foo (foo = "test" , bar = "test2" , baz = "test3" , foobar = "test4" ).dict
2527
2628 assert foo ["foo" ] == "test"
2729 assert foo ["bar" ] == "test2"
2830 assert foo ["baz" ] == "test3"
31+ assert foo ["foobar" ] == "test4"
2932
3033 def test_serialize_optional_include_None (self ):
3134 @dataclass
@@ -35,18 +38,23 @@ class Foo(JSONObject):
3538 foo : Optional [str ] = None
3639 bar : Optional [str ] = None
3740 baz : str = None
41+ foobar : Union [str , ExplicitNullValue , None ] = None
3842
3943 foo = Foo ().dict
4044
4145 assert foo ["foo" ] is None
4246 assert foo ["bar" ] is None
4347 assert foo ["baz" ] is None
48+ assert foo ["foobar" ] is None
4449
45- foo = Foo (foo = "test" , bar = "test2" , baz = "test3" ).dict
50+ foo = Foo (
51+ foo = "test" , bar = "test2" , baz = "test3" , foobar = ExplicitNullValue ()
52+ ).dict
4653
4754 assert foo ["foo" ] == "test"
4855 assert foo ["bar" ] == "test2"
4956 assert foo ["baz" ] == "test3"
57+ assert foo ["foobar" ] is None
5058
5159 def test_serialize_put_class (self ):
5260 """
0 commit comments