Implemented SheerkaOntology

This commit is contained in:
2021-01-11 15:36:03 +01:00
parent e3c2adb533
commit e26c83a825
119 changed files with 6876 additions and 2002 deletions
+58 -3
View File
@@ -5,6 +5,8 @@ from datetime import date, datetime
from os import path
import pytest
from core.global_symbols import NotFound
from sdp.sheerkaDataProvider import SheerkaDataProvider, Event
from sdp.sheerkaSerializer import PickleSerializer
@@ -116,6 +118,28 @@ def test_i_can_save_and_load_an_event(root):
evt = sdp.load_event()
assert evt.message == "hello world"
# check that the last event is updated
last_event_file = path.join(sdp.io.root, SheerkaDataProvider.LastEventFile)
assert sdp.io.exists(last_event_file)
assert sdp.io.read_text(last_event_file) == evt_digest
def test_i_can_save_and_load_events_with_multiple_sdp():
root = ".sheerka"
sdp1 = SheerkaDataProvider(root)
sdp1.save_event(Event("event 1", date=date(year=2007, month=9, day=10), user_id="kodjo"))
sdp1.save_event(Event("event 2", date=date(year=2007, month=9, day=10), user_id="kodjo"))
sdp2 = SheerkaDataProvider(root, "Another sdp")
sdp2.save_event(Event("event 3", date=date(year=2007, month=9, day=10), user_id="kodjo"))
sdp2.save_event(Event("event 4", date=date(year=2007, month=9, day=10), user_id="kodjo"))
events_from_1 = list(sdp1.load_events(-1))
events_from_2 = list(sdp2.load_events(-1))
assert [e.message for e in events_from_1] == ['event 4', 'event 3', 'event 2', 'event 1']
assert [e.message for e in events_from_2] == ['event 4', 'event 3', 'event 2', 'event 1']
@pytest.mark.parametrize("root", [
".sheerka",
@@ -219,7 +243,7 @@ def test_i_can_add_and_reload_one_item(root):
}
assert sdp.io.exists(path.join(sdp.io.root, SheerkaDataProvider.StateFolder, last_commit[0:24], last_commit))
assert sdp.io.exists(path.join(sdp.io.root, SheerkaDataProvider.HeadFile))
assert sdp.io.exists(path.join(sdp.io.root, SheerkaDataProvider.RefFolder, sdp.name, SheerkaDataProvider.HeadFile))
assert state.date is not None
assert state.parents == []
@@ -227,7 +251,8 @@ def test_i_can_add_and_reload_one_item(root):
assert state.data == {"entry": {'key': 'foo => bar', 'key2': ObjNoKey("a", "b")},
'entry2': {'key': 'value2'}}
assert sdp.io.read_text(path.join(sdp.io.root, SheerkaDataProvider.HeadFile)) == last_commit
assert sdp.io.read_text(
path.join(sdp.io.root, SheerkaDataProvider.RefFolder, sdp.name, SheerkaDataProvider.HeadFile)) == last_commit
@pytest.mark.parametrize("root", [
@@ -419,7 +444,7 @@ def test_i_can_remove_elements(root):
with sdp.get_transaction(evt_digest) as transaction:
transaction.remove("entry", "key")
assert sdp.get("entry", "key") is None
assert sdp.get("entry", "key") is NotFound
state = sdp.load_state(sdp.get_snapshot(SheerkaDataProvider.HeadFile))
assert state.data == {
@@ -456,6 +481,25 @@ def test_i_can_keep_state_history(root):
assert state.parents == []
@pytest.mark.parametrize("root", [
".sheerka",
"mem://"
])
def test_i_can_save_and_load_ontologies_names(root):
sdp = SheerkaDataProvider(root)
ontologies = ['new ontology', '#unit_test#', '__default__']
sdp.save_ontologies(ontologies)
assert sdp.load_ontologies() == ontologies
# extra
ontologies_files = path.join(sdp.io.root, SheerkaDataProvider.OntologiesFiles)
assert sdp.io.exists(ontologies_files)
assert sdp.io.read_text(ontologies_files) == """new ontology
#unit_test#
__default__"""
def test_i_can_remove_even_if_not_exist():
sdp = SheerkaDataProvider("mem://")
with sdp.get_transaction(evt_digest) as transaction:
@@ -478,3 +522,14 @@ def test_exists():
assert not sdp.exists("entry2")
assert not sdp.exists("entry", "key2")
assert sdp.exists("entry", "key")
def test_not_found_is_returned_when_an_entry_is_not_found():
sdp = SheerkaDataProvider("mem://")
with sdp.get_transaction(evt_digest) as transaction:
transaction.add("entry", "key", "value")
assert sdp.get("entry", "key") == "value"
assert sdp.get("entry", "key2") == NotFound
assert sdp.get("entry2") == NotFound