File: test_data_class.py

package info (click to toggle)
python-datamodel-code-generator 0.34.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,376 kB
  • sloc: python: 19,882; makefile: 15
file content (55 lines) | stat: -rw-r--r-- 2,021 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from __future__ import annotations

from datamodel_code_generator.model import DataModelFieldBase
from datamodel_code_generator.model.pydantic import DataTypeManager
from datamodel_code_generator.model.pydantic.dataclass import DataClass
from datamodel_code_generator.reference import Reference
from datamodel_code_generator.types import DataType, Types


def test_data_class() -> None:
    field = DataModelFieldBase(name="a", data_type=DataType(type="str"), required=True)

    data_class = DataClass(
        fields=[field],
        reference=Reference(name="test_model", path="test_model"),
    )

    assert data_class.name == "test_model"
    assert data_class.fields == [field]
    assert data_class.decorators == []
    assert data_class.render() == "@dataclass\nclass test_model:\n    a: str"


def test_data_class_base_class() -> None:
    field = DataModelFieldBase(name="a", data_type=DataType(type="str"), required=True)

    data_class = DataClass(
        fields=[field],
        base_classes=[Reference(name="Base", original_name="Base", path="Base")],
        reference=Reference(name="test_model", path="test_model"),
    )

    assert data_class.name == "test_model"
    assert data_class.fields == [field]
    assert data_class.decorators == []
    assert data_class.render() == "@dataclass\nclass test_model(Base):\n    a: str"


def test_data_class_optional() -> None:
    field = DataModelFieldBase(name="a", data_type=DataType(type="str"), default="'abc'", required=True)

    data_class = DataClass(
        fields=[field],
        reference=Reference(name="test_model", path="test_model"),
    )

    assert data_class.name == "test_model"
    assert data_class.fields == [field]
    assert data_class.decorators == []
    assert data_class.render() == "@dataclass\nclass test_model:\n    a: str = 'abc'"


def test_data_class_get_data_type() -> None:
    data_type_manager = DataTypeManager()
    assert data_type_manager.get_data_type(Types.integer) == data_type_manager.data_type(type="int")