22
33import dataclasses
44
5+ from enum import Enum
6+
57import pytest
68
79from openjd .adaptor_runtime ._background .model import DataclassMapper
810
911
12+ class StrEnum (str , Enum ):
13+ TEST = "test_str"
14+ TEST_UNI = "test_☃"
15+
16+
17+ class NormalEnum (Enum ):
18+ ONE = 1
19+
20+
1021# Define two dataclasses to use for tests
1122@dataclasses .dataclass
1223class Inner :
@@ -17,6 +28,9 @@ class Inner:
1728class Outer :
1829 outer_key : str
1930 inner : Inner
31+ test_str : StrEnum
32+ test_str_unicode : StrEnum
33+ normal_enum : NormalEnum
2034
2135
2236class TestDataclassMapper :
@@ -26,17 +40,29 @@ class TestDataclassMapper:
2640
2741 def test_maps_nested_dataclass (self ):
2842 # GIVEN
29- input = {"outer_key" : "outer_value" , "inner" : {"key" : "value" }}
43+ input = {
44+ "outer_key" : "outer_value" ,
45+ "inner" : {
46+ "key" : "value" ,
47+ },
48+ "test_str" : "test_str" ,
49+ "test_str_unicode" : "test_☃" ,
50+ "normal_enum" : 1 ,
51+ }
3052 mapper = DataclassMapper (Outer )
3153
3254 # WHEN
3355 result = mapper .map (input )
3456
3557 # THEN
36- assert isinstance (result , Outer )
37- assert isinstance (result .inner , Inner )
38- assert result .outer_key == "outer_value"
39- assert result .inner .key == "value"
58+ expected_dataclass = Outer (
59+ outer_key = "outer_value" ,
60+ inner = Inner (key = "value" ),
61+ test_str = StrEnum .TEST ,
62+ test_str_unicode = StrEnum .TEST_UNI ,
63+ normal_enum = NormalEnum .ONE ,
64+ )
65+ assert result == expected_dataclass
4066
4167 def test_raises_when_field_is_missing (self ):
4268 # GIVEN
0 commit comments