# Path: tests/entities.py
# class DataClassDefaultListStr:
#     value: List[str] = field(default_factory=list)
# 
# class DataClassDefaultOptionalList:
#     children: Optional[List[DataClassChild]] = None
# 
# class DataClassList:
#     children: List[DataClassChild]
# 
# class DataClassOptional:
#     a: int
#     b: Optional[int]
# 
# class DataClassWithNestedOptional:
#     a: Dict[str, Optional[int]]
# 
# class DataClassWithNestedOptionalAny:
#     a: Dict[str, Optional[Any]]
# 
# class DataClassWithNestedAny:
#     a: Dict[str, Any]
# 
# Path: tests/test_letter_case.py
# class CamelCasePerson:
#     given_name: str = field(
#         metadata={'dataclasses_json': {
#             'letter_case': LetterCase.CAMEL
#         }}
#     )
# 
# class KebabCasePerson:
#     given_name: str = field(
#         metadata={'dataclasses_json': {
#             'letter_case': LetterCase.KEBAB
#         }}
#     )
# 
# class SnakeCasePerson:
#     given_name: str = field(
#         metadata={'dataclasses_json': {
#             'letter_case': LetterCase.SNAKE
#         }}
#     )
# 
# class FieldNamePerson:
#     given_name: str = field(metadata=config(field_name='givenName'))


from .entities import (DataClassDefaultListStr, DataClassDefaultOptionalList, DataClassList, DataClassOptional,
                       DataClassWithNestedOptional, DataClassWithNestedOptionalAny, DataClassWithNestedAny)
from .test_letter_case import CamelCasePerson, KebabCasePerson, SnakeCasePerson, FieldNamePerson

test_do_list = """[{}, {"children": [{"name": "a"}, {"name": "b"}]}]"""
test_list = '[{"children": [{"name": "a"}, {"name": "b"}]}]'
nested_optional_data = '{"a": {"test": null}}'


class TestSchema:
    def test_default_list_str(self):

# Path: tests/entities.py
# class DataClassDefaultListStr:
#     value: List[str] = field(default_factory=list)
# 
# class DataClassDefaultOptionalList:
#     children: Optional[List[DataClassChild]] = None
# 
# class DataClassList:
#     children: List[DataClassChild]
# 
# class DataClassOptional:
#     a: int
#     b: Optional[int]
# 
# class DataClassWithNestedOptional:
#     a: Dict[str, Optional[int]]
# 
# class DataClassWithNestedOptionalAny:
#     a: Dict[str, Optional[Any]]
# 
# class DataClassWithNestedAny:
#     a: Dict[str, Any]
# 
# Path: tests/test_letter_case.py
# class CamelCasePerson:
#     given_name: str = field(
#         metadata={'dataclasses_json': {
#             'letter_case': LetterCase.CAMEL
#         }}
#     )
# 
# class KebabCasePerson:
#     given_name: str = field(
#         metadata={'dataclasses_json': {
#             'letter_case': LetterCase.KEBAB
#         }}
#     )
# 
# class SnakeCasePerson:
#     given_name: str = field(
#         metadata={'dataclasses_json': {
#             'letter_case': LetterCase.SNAKE
#         }}
#     )
# 
# class FieldNamePerson:
#     given_name: str = field(metadata=config(field_name='givenName'))


# Path: tests/test_schema.py
from .entities import (DataClassDefaultListStr, DataClassDefaultOptionalList, DataClassList, DataClassOptional,
                       DataClassWithNestedOptional, DataClassWithNestedOptionalAny, DataClassWithNestedAny)
from .test_letter_case import CamelCasePerson, KebabCasePerson, SnakeCasePerson, FieldNamePerson


test_do_list = """[{}, {"children": [{"name": "a"}, {"name": "b"}]}]"""
test_list = '[{"children": [{"name": "a"}, {"name": "b"}]}]'
nested_optional_data = '{"a": {"test": null}}'


class TestSchema:
    def test_default_list_str(self):

        DataClassDefaultListStr.schema().dumps(DataClassDefaultListStr())