From 9dbf8922a16e819507df6ca570c96111ab76aab9 Mon Sep 17 00:00:00 2001 From: Stefan Heese Date: Wed, 8 Nov 2023 12:00:18 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=85Test=20Vertragsteil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_vertragsteil.py | 69 +++++++++++--------------------------- 1 file changed, 19 insertions(+), 50 deletions(-) diff --git a/tests/test_vertragsteil.py b/tests/test_vertragsteil.py index 86e98b4e8..da5794fde 100644 --- a/tests/test_vertragsteil.py +++ b/tests/test_vertragsteil.py @@ -5,58 +5,27 @@ from pydantic import ValidationError from bo4e import Menge, Mengeneinheit, Vertragsteil +from tests.serialization_helper import assert_serialization_roundtrip class TestVertragsteil: - def test_vertragsteil_only_required_attributes(self) -> None: + @pytest.mark.parametrize( + "vertragsteil", + [ + pytest.param( + Vertragsteil( + vertragsteilbeginn=datetime(2001, 3, 15, tzinfo=timezone.utc), + vertragsteilende=datetime(2007, 11, 27, tzinfo=timezone.utc), + lokation="Bar", + vertraglich_fixierte_menge=Menge(wert=Decimal(3.1), einheit=Mengeneinheit.KWH), + minimale_abnahmemenge=Menge(wert=Decimal(2000), einheit=Mengeneinheit.KWH), + maximale_abnahmemenge=Menge(wert=Decimal(0.111111), einheit=Mengeneinheit.KWH), + ), + ), + ], + ) + def test_serialization_roundtrip(self, vertragsteil: Vertragsteil) -> None: """ - Test de-/serialisation of Vertragsteil with minimal attributes. + Test de-/serialisation of Vertragsteil. """ - vertragsteil = Vertragsteil( - vertragsteilbeginn=datetime(2001, 3, 15, tzinfo=timezone.utc), - vertragsteilende=datetime(2007, 11, 27, tzinfo=timezone.utc), - ) - - json_string = vertragsteil.model_dump_json(by_alias=True) - - assert "2001-03-15T00:00:00Z" in json_string - assert "2007-11-27T00:00:00Z" in json_string - - vertragsteil_deserialized = Vertragsteil.model_validate_json(json_string) - - assert isinstance(vertragsteil_deserialized.vertragsteilbeginn, datetime) - assert vertragsteil_deserialized.vertragsteilbeginn == datetime(2001, 3, 15, tzinfo=timezone.utc) - assert isinstance(vertragsteil_deserialized.vertragsteilende, datetime) - assert vertragsteil_deserialized.vertragsteilende == datetime(2007, 11, 27, tzinfo=timezone.utc) - - def test_vertragsteil_required_and_optional_attributes(self) -> None: - """ - Test de-/serialisation of Vertragsteil with maximal attributes. - """ - vertragsteil = Vertragsteil( - vertragsteilbeginn=datetime(2001, 3, 15, tzinfo=timezone.utc), - vertragsteilende=datetime(2007, 11, 27, tzinfo=timezone.utc), - lokation="Bar", - vertraglich_fixierte_menge=Menge(wert=Decimal(3.1), einheit=Mengeneinheit.KWH), - minimale_abnahmemenge=Menge(wert=Decimal(2000), einheit=Mengeneinheit.KWH), - maximale_abnahmemenge=Menge(wert=Decimal(0.111111), einheit=Mengeneinheit.KWH), - ) - - json_string = vertragsteil.model_dump_json(by_alias=True) - - assert "2001-03-15T00:00:00Z" in json_string - assert "2007-11-27T00:00:00Z" in json_string - assert "Bar" in json_string - assert "KWH" in json_string - assert "0.111111" in json_string - - vertragsteil_deserialized = Vertragsteil.model_validate_json(json_string) - - assert isinstance(vertragsteil_deserialized.vertragsteilbeginn, datetime) - assert vertragsteil_deserialized.vertragsteilbeginn == datetime(2001, 3, 15, tzinfo=timezone.utc) - assert isinstance(vertragsteil_deserialized.vertragsteilende, datetime) - assert vertragsteil_deserialized.vertragsteilende == datetime(2007, 11, 27, tzinfo=timezone.utc) - assert isinstance(vertragsteil_deserialized.lokation, str) - assert vertragsteil_deserialized.lokation == "Bar" - assert isinstance(vertragsteil_deserialized.minimale_abnahmemenge, Menge) - assert vertragsteil_deserialized.minimale_abnahmemenge == Menge(wert=Decimal(2000), einheit=Mengeneinheit.KWH) + assert_serialization_roundtrip(vertragsteil)