Implemented ConceptManager with concept creation, modification and deletion
This commit is contained in:
+14
-10
@@ -4,6 +4,7 @@ import pytest
|
||||
from core.builtin_concepts import BuiltinConcepts, ReturnValueConcept, UserInputConcept, AllBuiltinConcepts
|
||||
from core.concept import Concept, PROPERTIES_TO_SERIALIZE, ConceptParts, NotInit
|
||||
from core.sheerka.Sheerka import Sheerka, BASE_NODE_PARSER_CLASS
|
||||
from core.sheerka.services.SheerkaConceptManager import SheerkaConceptManager
|
||||
from core.tokenizer import Token, TokenKind
|
||||
|
||||
from tests.TestUsingFileBasedSheerka import TestUsingFileBasedSheerka
|
||||
@@ -342,16 +343,17 @@ class TestSheerkaUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
||||
|
||||
def test_builtin_concepts_are_initialized(self):
|
||||
sheerka = self.get_sheerka()
|
||||
service = sheerka.services[SheerkaConceptManager.NAME]
|
||||
for concept_name in AllBuiltinConcepts:
|
||||
assert sheerka.has_key(str(concept_name))
|
||||
assert sheerka.sdp.get(sheerka.CONCEPTS_BY_KEY_ENTRY, str(concept_name)) is not None
|
||||
assert service.has_key(str(concept_name))
|
||||
assert sheerka.sdp.get(service.CONCEPTS_BY_KEY_ENTRY, str(concept_name)) is not None
|
||||
|
||||
# I can get back data from the sdp when the cache is empty
|
||||
sheerka.cache_manager.clear()
|
||||
|
||||
# caches are empty
|
||||
assert not sheerka.has_id("1")
|
||||
assert not sheerka.has_key(str(BuiltinConcepts.SHEERKA))
|
||||
assert not service.has_id("1")
|
||||
assert not service.has_key(str(BuiltinConcepts.SHEERKA))
|
||||
|
||||
assert sheerka.get_by_id("1") == sheerka # use sdp
|
||||
|
||||
@@ -359,11 +361,12 @@ class TestSheerkaUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
||||
|
||||
def test_builtin_concepts_can_be_updated(self):
|
||||
sheerka = self.get_sheerka()
|
||||
service = sheerka.services[SheerkaConceptManager.NAME]
|
||||
before_parsing = sheerka.get_by_key(BuiltinConcepts.BEFORE_PARSING)
|
||||
before_parsing.get_metadata().desc = "I have a description"
|
||||
before_parsing.get_metadata().full_serialization = True
|
||||
with sheerka.sdp.get_transaction("Test") as transac:
|
||||
transac.add(sheerka.CONCEPTS_BY_KEY_ENTRY, before_parsing.key, before_parsing, use_ref=True)
|
||||
transac.add(service.CONCEPTS_BY_KEY_ENTRY, before_parsing.key, before_parsing, use_ref=True)
|
||||
|
||||
sheerka = self.get_sheerka() # another fresh new instance
|
||||
before_parsing = sheerka.get_by_key(BuiltinConcepts.BEFORE_PARSING)
|
||||
@@ -390,11 +393,12 @@ class TestSheerkaUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
||||
|
||||
def test_i_can_retrieve_from_sdp_when_cache_is_reset(self):
|
||||
sheerka, context, concept = self.init_concepts(Concept("foo", body="1"))
|
||||
service = sheerka.services[SheerkaConceptManager.NAME]
|
||||
sheerka.cache_manager.commit(context)
|
||||
|
||||
sheerka.cache_manager.clear()
|
||||
sheerka.get_by_key("foo")
|
||||
assert sheerka.has_key("foo")
|
||||
assert service.has_key("foo")
|
||||
|
||||
# It's also updated when sdp returns more than one element
|
||||
concept2 = Concept("foo", body="2")
|
||||
@@ -403,20 +407,20 @@ class TestSheerkaUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
||||
|
||||
sheerka.cache_manager.clear()
|
||||
assert len(sheerka.get_by_key("foo")) == 2
|
||||
assert sheerka.has_key("foo")
|
||||
assert service.has_key("foo")
|
||||
|
||||
# updated when by_id
|
||||
sheerka.cache_manager.clear()
|
||||
assert sheerka.get_by_id("1001") == concept
|
||||
assert sheerka.has_id("1001")
|
||||
assert service.has_id("1001")
|
||||
|
||||
sheerka.cache_manager.clear()
|
||||
assert sheerka.get_by_name("foo") == [concept, concept2]
|
||||
assert sheerka.has_name("foo")
|
||||
assert service.has_name("foo")
|
||||
|
||||
sheerka.cache_manager.clear()
|
||||
assert sheerka.get_by_hash(concept.get_definition_hash()) == concept
|
||||
assert sheerka.has_hash(concept.get_definition_hash())
|
||||
assert service.has_hash(concept.get_definition_hash())
|
||||
|
||||
def test_get_by_key_retrieve_all_elements(self):
|
||||
sheerka, context, *concepts = self.init_concepts(
|
||||
|
||||
Reference in New Issue
Block a user