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