First version of explain. Creating a new parser was a wrong approach. Need to reimplement

This commit is contained in:
2020-04-17 17:24:57 +02:00
parent 6c7c529016
commit d6ea2461a8
43 changed files with 2679 additions and 162 deletions
+69 -14
View File
@@ -1,16 +1,15 @@
import hashlib
import pytest
import json
import os
import shutil
from datetime import date, datetime
from os import path
import core.utils
import pytest
from sdp.sheerkaDataProvider import SheerkaDataProvider, Event, SheerkaDataProviderError, \
SheerkaDataProviderDuplicateKeyError, SheerkaDataProviderResult, SheerkaDataProviderRef
from datetime import date, datetime
import shutil
import json
from sdp.sheerkaSerializer import JsonSerializer, Serializer, PickleSerializer
import core.utils
tests_root = path.abspath("../../build/tests")
evt_digest = "3a571cb6034ef6fc8d7fe91948d0d29728eed74de02bac7968b0e9facca2c2d7"
@@ -1021,14 +1020,14 @@ def test_i_can_set_a_reference(root):
def test_i_cannot_set_using_use_ref_and_is_ref():
sdp = SheerkaDataProvider("mem://")
with pytest.raises(SheerkaDataProviderError) as error:
with pytest.raises(SheerkaDataProviderError):
sdp.set(evt_digest, "entry", ObjWithDigestWithKey("a", "b"), use_ref=True, is_ref=True)
def test_i_cannot_set_using_is_ref_if_obj_is_not_a_dictionary():
sdp = SheerkaDataProvider("mem://")
with pytest.raises(SheerkaDataProviderError) as error:
with pytest.raises(SheerkaDataProviderError):
sdp.set(evt_digest, "entry", ObjWithDigestWithKey("a", "b"), is_ref=True)
@@ -1435,8 +1434,17 @@ def test_i_can_remove_when_only_one_element(root):
def test_i_cannot_remove_if_entry_does_not_exist(root):
sdp = SheerkaDataProvider(root)
with pytest.raises(IndexError) as e:
sdp.remove(evt_digest, "entry")
assert str(e) == "entry"
sdp.remove(evt_digest, "entry", silent_remove=False)
assert str(e.value) == "entry"
@pytest.mark.parametrize("root", [
".sheerka",
"mem://"
])
def test_no_exception_is_raise_when_remove_in_silent_mode(root):
sdp = SheerkaDataProvider(root)
sdp.remove(evt_digest, "entry", silent_remove=True) # default
@pytest.mark.parametrize("root", [
@@ -1773,7 +1781,7 @@ def test_i_cannot_modify_a_key_that_does_not_exist(root):
with pytest.raises(IndexError) as e:
sdp.modify(evt_digest, "entry1", "2", "bar")
assert str(e) == "entry1.2"
assert str(e.value) == "entry1.2"
@pytest.mark.parametrize("root", [
@@ -1938,7 +1946,7 @@ def test_i_cannot_get_an_entry_that_does_not_exist(root):
assert sdp.get_safe("entry") is None
with pytest.raises(IndexError) as e:
sdp.get("entry")
assert str(e) == "entry"
assert str(e.value) == "entry"
@pytest.mark.parametrize("root", [
@@ -1952,7 +1960,7 @@ def test_i_cannot_get_a_key_that_does_not_exist(root):
assert sdp.get_safe("entry1", "2") is None
with pytest.raises(IndexError) as e:
sdp.get("entry1", "2")
assert str(e) == "entry.1"
assert str(e.value) == "entry1.2"
@pytest.mark.parametrize("root", [
@@ -2257,3 +2265,50 @@ def test_i_get_safe_object_without_origin(root):
from_db_no_origin = sdp.get_safe(result.entry, result.key, load_origin=False)
assert from_db_no_origin == obj
assert not hasattr(from_db_no_origin, Serializer.ORIGIN)
def test_i_can_get_ref():
sdp = SheerkaDataProvider("mem://")
obj = ObjDumpJson("my_key", "value1")
obj_serializer = JsonSerializer(core.utils.get_full_qualified_name(obj))
sdp.serializer.register(obj_serializer)
result = sdp.add(evt_digest, "entry", obj, use_ref=True)
ref = sdp.get_ref(result.entry, result.key)
assert ref == "076f0df0f110c304982242a88088efacce71f361e49f065db75919a7f72c2821"
def test_i_can_get_ref_when_list():
sdp = SheerkaDataProvider("mem://")
obj_serializer = JsonSerializer(core.utils.get_full_qualified_name(ObjDumpJson))
sdp.serializer.register(obj_serializer)
sdp.add(evt_digest, "entry", ObjDumpJson("my_key", "value1"), use_ref=True)
result = sdp.add(evt_digest, "entry", ObjDumpJson("my_key", "value2"), use_ref=True)
ref = sdp.get_ref(result.entry, result.key)
assert ref == [
"076f0df0f110c304982242a88088efacce71f361e49f065db75919a7f72c2821",
"e6bf5b56428cfce0f08c94f2c3625dc3b3a8180d7229eaa9f8aa967fb16e5256"
]
def test_i_cannot_get_ref_if_the_saved_item_is_not_a_ref():
sdp = SheerkaDataProvider("mem://")
obj = ObjDumpJson("my_key", "value1")
result = sdp.add(evt_digest, "entry", obj, use_ref=False)
with pytest.raises(SheerkaDataProviderError) as e:
sdp.get_ref(result.entry, result.key)
assert e.value.args[0] == "Not a reference"
assert e.value.obj == f"{result.entry}.{result.key}"
def test_i_cannot_get_ref_if_the_item_does_not_exist():
sdp = SheerkaDataProvider("mem://")
with pytest.raises(IndexError):
sdp.get_ref("fake", "fake")