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 56 57 58 59 60 61 62 63 64 65 66 67
|
from __future__ import annotations
from datamodel_code_generator.model import DataModelFieldBase
from datamodel_code_generator.model.pydantic_v2.root_model import RootModel
from datamodel_code_generator.reference import Reference
from datamodel_code_generator.types import DataType
def test_root_model() -> None:
root_model = RootModel(
fields=[
DataModelFieldBase(
name="a",
data_type=DataType(type="str"),
default="abc",
required=False,
)
],
reference=Reference(name="TestRootModel", path="test_root_model"),
)
assert root_model.name == "TestRootModel"
assert root_model.fields == [
DataModelFieldBase(
name="a",
data_type=DataType(type="str"),
default="abc",
required=False,
parent=root_model,
)
]
assert root_model.base_class == "RootModel"
assert root_model.custom_base_class is None
assert root_model.render() == ("class TestRootModel(RootModel[Optional[str]]):\n root: Optional[str] = 'abc'")
def test_root_model_custom_base_class_is_ignored() -> None:
"""Verify that passing a custom_base_class is ignored."""
root_model = RootModel(
custom_base_class="test.Test",
fields=[
DataModelFieldBase(
name="a",
data_type=DataType(type="str"),
default="abc",
required=False,
)
],
reference=Reference(name="TestRootModel", path="test_root_model"),
)
assert root_model.name == "TestRootModel"
assert root_model.fields == [
DataModelFieldBase(
name="a",
data_type=DataType(type="str"),
default="abc",
required=False,
parent=root_model,
)
]
assert root_model.base_class == "RootModel"
assert root_model.custom_base_class is None # make sure it's ignored
assert root_model.render() == ("class TestRootModel(RootModel[Optional[str]]):\n root: Optional[str] = 'abc'")
|