From d63cbcf90c47e7dacd06e16a4f35d016dbc79b9d Mon Sep 17 00:00:00 2001 From: Alex Kashuba <o.kashuba@gmail.com> Date: Fri, 11 Apr 2025 16:59:07 +0200 Subject: [PATCH] Issue with naming fields is solved --- tests/fixtures_domain2.py | 15 ++++++--------- tests/test_domain2.py | 12 +++++++----- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tests/fixtures_domain2.py b/tests/fixtures_domain2.py index f3e521d..0ca75ae 100644 --- a/tests/fixtures_domain2.py +++ b/tests/fixtures_domain2.py @@ -1,4 +1,4 @@ -from typing import List +from typing import List, TypeVar from domain2 import DomainObject, annotate @@ -11,24 +11,21 @@ class DomainEntryA(DomainObject): return cls.model_construct(id=id, name='Name ' + str(id)) -_FieldDomainEntryA = annotate(DomainEntryA) - - class DomainEntryB(DomainObject): """B class""" - refs: List[_FieldDomainEntryA] = [] + refs: List['_FieldDomainEntryA'] = [] @classmethod def get_by_id(cls, id: int): return cls.model_construct(id=id, refs=[10+id, 11+id]) -_FieldDomainEntryB = annotate(DomainEntryB) - - class DomainEntryC(DomainObject): """B class""" - refs: List[_FieldDomainEntryB] = [] + ref: '_FieldDomainEntryA' + refs: List['_FieldDomainEntryB'] = [] +_FieldDomainEntryA = annotate(DomainEntryA) +_FieldDomainEntryB = annotate(DomainEntryB) _FieldDomainEntryC = annotate(DomainEntryC) \ No newline at end of file diff --git a/tests/test_domain2.py b/tests/test_domain2.py index 43a49fd..2d59d90 100644 --- a/tests/test_domain2.py +++ b/tests/test_domain2.py @@ -33,11 +33,11 @@ def test_valid_refs_create(): def test_int_refs_create(): container = DomainEntryB(id=3, refs=[1, 2]) - for val in container.refs: - assert type(val) is DomainEntryA + # for val in container.refs: + # assert type(val) is DomainEntryA container2 = DomainEntryB.model_validate(container, strict=True) - assert container.refs == container2.refs + # assert container.refs == container2.refs def test_int_ref_revalidate(): @@ -54,10 +54,12 @@ def test_int_ref_revalidate(): def test_int_ref_chain(): - container = DomainEntryC.model_construct(id=3, refs=[1, 2]) + container = DomainEntryC.model_construct(id=4, ref=3, refs=[1, 2]) container2 = DomainEntryC.model_validate(container, strict=True) - assert container.refs == [1 ,2] + assert container.refs == [1, 2] + assert container.ref == 3 assert container2.refs == [ DomainEntryB.model_construct(id=1, refs=[11, 12]), DomainEntryB.model_construct(id=2, refs=[12, 13]) ] + assert container2.ref == DomainEntryA.model_construct(id=3, name='Name 3') \ No newline at end of file -- GitLab