58 lines
1.8 KiB
Python
58 lines
1.8 KiB
Python
import pytest
|
|
from dataclasses import dataclass
|
|
|
|
from sdp.sheerkaDataProvider import Event
|
|
from sdp.sheerkaSerializer import Serializer, ObjectSerializer, SerializerContext, BaseSerializer
|
|
from datetime import datetime
|
|
import core.utils
|
|
|
|
|
|
@dataclass()
|
|
class Obj:
|
|
key: str = ""
|
|
prop1: str = ""
|
|
|
|
def from_dict(self, json_object):
|
|
self.prop1 = json_object["prop1"]
|
|
self.key = json_object["key"]
|
|
return self
|
|
|
|
def to_dict(self):
|
|
return self.__dict__
|
|
|
|
|
|
def test_i_can_serialize_an_event():
|
|
event = Event("test", user="user", date=datetime.fromisoformat("2019-10-21T10:20:30.999"))
|
|
serializer = Serializer()
|
|
|
|
stream = serializer.serialize(event, None)
|
|
loaded = serializer.deserialize(stream, None)
|
|
|
|
assert event.version == loaded.version
|
|
assert event.user == loaded.user
|
|
assert event.date == loaded.date
|
|
assert event.message == loaded.message
|
|
|
|
|
|
def test_i_can_serialize_an_object():
|
|
obj = Obj("10", "value")
|
|
serializer = Serializer()
|
|
serializer.register(ObjectSerializer("tests.test_sheerkaSerializer.Obj"))
|
|
context = SerializerContext("kodjo", "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b")
|
|
|
|
stream = serializer.serialize(obj, context)
|
|
loaded = serializer.deserialize(stream, context)
|
|
|
|
assert getattr(loaded, Serializer.HISTORY)[Serializer.USERNAME] == "kodjo"
|
|
assert getattr(loaded, Serializer.HISTORY)[Serializer.MODIFICATION_DATE] != ""
|
|
assert getattr(loaded, Serializer.HISTORY)[Serializer.PARENTS] == []
|
|
assert loaded.key == "10"
|
|
assert loaded.prop1 == "value"
|
|
|
|
|
|
@pytest.mark.parametrize("obj, expected", [
|
|
(Obj("10", "value"), "tests.test_sheerkaSerializer.Obj")
|
|
])
|
|
def test_get_full_qualified_name(obj, expected):
|
|
assert expected == core.utils.get_full_qualified_name(obj)
|