From 7e394f43121827de75306d6a566dbddacbc764fa Mon Sep 17 00:00:00 2001
From: Alex Kashuba <o.kashuba@gmail.com>
Date: Tue, 15 Apr 2025 12:20:39 +0200
Subject: [PATCH] Removed Type, used Optional

---
 tests/fixtures_domain2.py |  4 ++--
 tests/test_domain2.py     | 14 +++++++++++++-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/tests/fixtures_domain2.py b/tests/fixtures_domain2.py
index 0ca75ae..156eae3 100644
--- a/tests/fixtures_domain2.py
+++ b/tests/fixtures_domain2.py
@@ -1,4 +1,4 @@
-from typing import List, TypeVar
+from typing import List, Optional
 from domain2 import DomainObject, annotate
 
 
@@ -22,7 +22,7 @@ class DomainEntryB(DomainObject):
 
 class DomainEntryC(DomainObject):
     """B class"""
-    ref: '_FieldDomainEntryA'
+    ref: Optional['_FieldDomainEntryA']
     refs: List['_FieldDomainEntryB'] = []
 
 
diff --git a/tests/test_domain2.py b/tests/test_domain2.py
index 2d59d90..dad546e 100644
--- a/tests/test_domain2.py
+++ b/tests/test_domain2.py
@@ -62,4 +62,16 @@ def test_int_ref_chain():
         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
+    assert container2.ref == DomainEntryA.model_construct(id=3, name='Name 3')
+
+def test_ref_optional():
+    container = DomainEntryC.model_construct(id=4, ref=None, refs=[1, 2])
+    container2 = DomainEntryC.model_validate(container, strict=True)
+    assert container.ref is None
+    assert container2.ref is None
+
+
+def test_ref_optional_2():
+    container = DomainEntryC.model_construct(id=4, refs=[1, 2])
+    with pytest.raises(ValidationError, match="1 validation error for DomainEntryC"):
+        DomainEntryC.model_validate(container, strict=True)
\ No newline at end of file
-- 
GitLab