Files
Sheerka/tests/core/test_sheerka.py
T

57 lines
2.0 KiB
Python

from os import path
import pytest
from base import UsingFileBasedSheerka
from core.concept import ConceptDefaultProps
from helpers import get_concept, get_concepts, get_file_content
class TestSheerka(UsingFileBasedSheerka):
def test_i_can_initialize_sheerka(self, sheerka_fb):
sheerka = sheerka_fb
assert path.exists(self.SHEERKA_ROOT_DIR)
last_event_path = path.join(self.SHEERKA_ROOT_DIR, "LAST_EVENT")
assert path.exists(last_event_path)
last_event_digest = get_file_content(last_event_path)
last_event_folder = path.join(self.SHEERKA_ROOT_DIR, "events", last_event_digest[:24], last_event_digest)
assert path.exists(last_event_folder)
assert path.exists(last_event_folder + "_admin_context")
assert len(sheerka.services) > 0
assert len(sheerka.evaluators) > 0
# add test to validate that we can access bind methods
def test_i_can_use_isinstance(self, sheerka, context):
foo, bar = get_concepts(context, "foo", "bar", use_sheerka=True)
assert sheerka.isinstance(foo, foo.key)
assert sheerka.isinstance(foo, foo.str_id)
assert sheerka.isinstance(foo, foo)
assert sheerka.isinstance(foo, foo.get_metadata())
assert not sheerka.isinstance(foo, bar.key)
assert not sheerka.isinstance(foo, bar.str_id)
assert not sheerka.isinstance(foo, bar)
assert not sheerka.isinstance(foo, bar.get_metadata())
@pytest.mark.parametrize("obj, expected", [
(None, None),
(1, 1),
])
def test_i_can_get_obj_value(self, sheerka, context, obj, expected):
assert sheerka.objvalue(obj) == expected
def test_i_can_get_obj_value_for_concept(self, sheerka, context):
foo = get_concept("foo")
bar = get_concept("bar")
bar.set_value(ConceptDefaultProps.BODY, 1)
foo.set_value(ConceptDefaultProps.BODY, bar)
foo.get_runtime_info().is_evaluated = True
bar.get_runtime_info().is_evaluated = True
assert sheerka.objvalue(foo) == 1