forked from p15670423/monkey
UT: Add unit tests for PydanticEventSerializer
This commit is contained in:
parent
1755d72ae7
commit
9e9160304c
|
@ -0,0 +1,50 @@
|
||||||
|
from abc import ABC
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from pydantic import ValidationError
|
||||||
|
|
||||||
|
from common.base_models import InfectionMonkeyBaseModel
|
||||||
|
from common.event_serializers import PydanticEventSerializer
|
||||||
|
from common.events import AbstractAgentEvent
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class NotAgentEvent(ABC):
|
||||||
|
some_field: int
|
||||||
|
other_field: float
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True)
|
||||||
|
class SomeAgentEvent(AbstractAgentEvent):
|
||||||
|
bogus: int = field(default_factory=int)
|
||||||
|
|
||||||
|
|
||||||
|
class PydanticEvent(InfectionMonkeyBaseModel):
|
||||||
|
some_field: str
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def pydantic_event_serializer():
|
||||||
|
return PydanticEventSerializer(PydanticEvent)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize("event", [NotAgentEvent(1, 2.0), SomeAgentEvent(2)])
|
||||||
|
def test_pydantic_event_serializer__serialize_wrong_type(pydantic_event_serializer, event):
|
||||||
|
with pytest.raises(TypeError):
|
||||||
|
pydantic_event_serializer.serialize(event)
|
||||||
|
|
||||||
|
|
||||||
|
def test_pydantic_event_serializer__deserialize_wrong_type(pydantic_event_serializer):
|
||||||
|
with pytest.raises(ValidationError):
|
||||||
|
pydantic_event_serializer.deserialize("bla")
|
||||||
|
|
||||||
|
|
||||||
|
def test_pydanitc_event_serializer__de_serialize(pydantic_event_serializer):
|
||||||
|
pydantic_event = PydanticEvent(some_field="some_field")
|
||||||
|
|
||||||
|
serialized_event = pydantic_event_serializer.serialize(pydantic_event)
|
||||||
|
deserialized_object = pydantic_event_serializer.deserialize(serialized_event)
|
||||||
|
|
||||||
|
assert type(serialized_event) != type(deserialized_object)
|
||||||
|
assert deserialized_object == pydantic_event
|
Loading…
Reference in New Issue