Skip to content

Commit

Permalink
✅Test Vertragsteil
Browse files Browse the repository at this point in the history
  • Loading branch information
hf-sheese committed Nov 8, 2023
1 parent e3c5801 commit 9dbf892
Showing 1 changed file with 19 additions and 50 deletions.
69 changes: 19 additions & 50 deletions tests/test_vertragsteil.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit 9dbf892

Please sign in to comment.