Implemented ConceptManager with concept creation, modification and deletion
This commit is contained in:
Vendored
+47
-1
@@ -1,7 +1,10 @@
|
||||
import pytest
|
||||
from cache.Cache import Cache
|
||||
from cache.CacheManager import CacheManager
|
||||
from cache.CacheManager import CacheManager, ConceptNotFound
|
||||
from cache.DictionaryCache import DictionaryCache
|
||||
from cache.ListCache import ListCache
|
||||
from cache.ListIfNeededCache import ListIfNeededCache
|
||||
from core.concept import Concept
|
||||
|
||||
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
||||
|
||||
@@ -109,3 +112,46 @@ class TestCacheManager(TestUsingMemoryBasedSheerka):
|
||||
cache.put(False, {"key": "value", "key2": "value2", "key3": "value3"})
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test") == {"key": "value", "key2": "value2", "key3": "value3"}
|
||||
|
||||
def test_i_can_remove_a_concept_from_concepts_caches(self):
|
||||
cache_manager = CacheManager(True)
|
||||
cache_manager.register_concept_cache("id", Cache(), lambda c: c.id, True)
|
||||
cache_manager.register_concept_cache("key", ListIfNeededCache(), lambda c: c.key, True)
|
||||
|
||||
sheerka, context, one, two, three, two_bis = self.init_concepts("one", "two", "three", Concept("two", body="2"))
|
||||
|
||||
for concept in [one, two, three, two_bis]:
|
||||
cache_manager.add_concept(concept)
|
||||
|
||||
# sanity check
|
||||
cache_def = cache_manager.caches["id"]
|
||||
assert cache_def.cache.copy() == {one.id: one, two.id: two, three.id: three, two_bis.id: two_bis}
|
||||
cache_def = cache_manager.caches["key"]
|
||||
assert cache_def.cache.copy() == {one.key: one, two.key: [two, two_bis], three.key: three}
|
||||
|
||||
for cache_name in cache_manager.concept_caches:
|
||||
cache_manager.caches[cache_name].cache.reset_events()
|
||||
|
||||
cache_manager.remove_concept(sheerka.new(("two", two_bis.id)))
|
||||
|
||||
cache_def = cache_manager.caches["id"]
|
||||
assert cache_def.cache.copy() == {one.id: one, two.id: two, three.id: three}
|
||||
assert cache_def.cache.to_remove == {two_bis.id}
|
||||
assert cache_def.cache.to_add == set()
|
||||
assert len(cache_def.cache) == 3
|
||||
|
||||
cache_def = cache_manager.caches["key"]
|
||||
assert cache_def.cache.copy() == {one.key: one, two.key: two, three.key: three}
|
||||
assert cache_def.cache.to_remove == set()
|
||||
assert cache_def.cache.to_add == {"two"}
|
||||
assert len(cache_def.cache) == 3
|
||||
|
||||
def test_i_cannot_remove_a_concept_that_does_not_exists(self):
|
||||
cache_manager = CacheManager(True)
|
||||
cache_manager.register_concept_cache("id", Cache(), lambda c: c.id, True)
|
||||
cache_manager.register_concept_cache("key", ListIfNeededCache(), lambda c: c.key, True)
|
||||
|
||||
with pytest.raises(ConceptNotFound) as ex:
|
||||
cache_manager.remove_concept(Concept("foo", id="1001"))
|
||||
|
||||
assert ex.value.concept == Concept("foo", id="1001")
|
||||
|
||||
Reference in New Issue
Block a user