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