Added DefaultParser
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
import hashlib
|
||||
|
||||
import pytest
|
||||
import os
|
||||
from os import path
|
||||
@@ -6,6 +8,8 @@ from datetime import date, datetime
|
||||
import shutil
|
||||
import json
|
||||
|
||||
from sdp.sheerkaSerializer import ObjectSerializer, BaseSerializer, Serializer
|
||||
|
||||
tests_root = path.abspath("../build/tests")
|
||||
|
||||
|
||||
@@ -70,6 +74,33 @@ class ObjNoKey:
|
||||
return f"ObjNoKey({self.a}, {self.b})"
|
||||
|
||||
|
||||
class ObjDumpJson:
|
||||
def __init__(self, key, value):
|
||||
self.key = key
|
||||
self.value = value
|
||||
|
||||
def __eq__(self, obj):
|
||||
return isinstance(obj, ObjDumpJson) and \
|
||||
self.key == obj.key and \
|
||||
self.value == obj.value
|
||||
|
||||
def __repr__(self):
|
||||
return f"ObjDumpJson({self.key}, {self.value})"
|
||||
|
||||
def get_key(self):
|
||||
return self.key
|
||||
|
||||
def get_digest(self):
|
||||
return hashlib.sha256(f"Concept:{self.key}{self.value}".encode("utf-8")).hexdigest()
|
||||
|
||||
def to_dict(self):
|
||||
return self.__dict__
|
||||
|
||||
def from_dict(self, as_dict):
|
||||
self.value = as_dict["value"]
|
||||
self.key = as_dict["key"]
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def init_test():
|
||||
if path.exists(tests_root):
|
||||
@@ -570,4 +601,56 @@ def test_i_can_test_than_an_entry_exits():
|
||||
|
||||
assert not sdp.exists("entry")
|
||||
sdp.add(Event("event"), "entry", "value")
|
||||
assert sdp.exists("entry")
|
||||
assert sdp.exists("entry")
|
||||
|
||||
|
||||
def test_i_can_save_and_load_object_with_history():
|
||||
sdp = SheerkaDataProvider(".sheerka")
|
||||
obj = ObjDumpJson("my_key", "value1")
|
||||
sdp.serializer.register(ObjectSerializer(BaseSerializer.get_full_qualified_name(obj)))
|
||||
|
||||
entry, key = sdp.add_ref("Obj", obj)
|
||||
loaded = sdp.get(entry, key)
|
||||
history = getattr(loaded, Serializer.HISTORY)
|
||||
|
||||
assert key == obj.key
|
||||
assert entry == "Obj"
|
||||
assert loaded.key == obj.key
|
||||
assert loaded.value == obj.value
|
||||
|
||||
assert getattr(history, Serializer.USERNAME) == "kodjo"
|
||||
assert getattr(history, Serializer.MODIFICATION_DATE) != ""
|
||||
assert getattr(history, Serializer.PARENTS) == []
|
||||
|
||||
assert os.path.exists(sdp.get_obj_path(sdp.ObjectsFolder, obj.get_digest()))
|
||||
|
||||
# save a second type with no modification
|
||||
previous_modification_time = getattr(history, Serializer.MODIFICATION_DATE)
|
||||
previous_parents = getattr(history, Serializer.PARENTS)
|
||||
|
||||
sdp.add_ref("Obj", loaded)
|
||||
loaded = sdp.get(entry, key)
|
||||
history = getattr(loaded, Serializer.HISTORY)
|
||||
|
||||
assert getattr(history, Serializer.MODIFICATION_DATE) == previous_modification_time
|
||||
assert getattr(history, Serializer.PARENTS) == previous_parents
|
||||
|
||||
# save again, but with a modification
|
||||
previous_digest = loaded.get_digest()
|
||||
loaded.value = "value2"
|
||||
|
||||
sdp.add_ref("Obj", loaded)
|
||||
loaded2 = sdp.get(entry, key)
|
||||
history2 = getattr(loaded, Serializer.HISTORY)
|
||||
|
||||
assert loaded2.key == loaded.key
|
||||
assert loaded2.value == loaded.value
|
||||
|
||||
assert getattr(history2, Serializer.USERNAME) == "kodjo"
|
||||
assert getattr(history2, Serializer.MODIFICATION_DATE) != ""
|
||||
assert getattr(history2, Serializer.PARENTS) == [previous_digest]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user