Implemented SheerkaOntology
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user