from core.concept import Concept, ConceptParts from core.sheerka.Sheerka import Sheerka from core.sheerka.services.SheerkaVariableManager import SheerkaVariableManager from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka class TestSheerkaVariable(TestUsingMemoryBasedSheerka): def test_i_can_record_and_load_a_constant(self): sheerka = self.get_sheerka(cache_only=False) context = self.get_context(sheerka) sheerka.record(context, "TestSheerkaVariable", "my_variable", 1) res = sheerka.load("TestSheerkaVariable", "my_variable") assert res == 1 # I can persist in db sheerka.cache_manager.commit(context) assert sheerka.sdp.exists(SheerkaVariableManager.VARIABLES_ENTRY, "TestSheerkaVariable|my_variable") loaded = sheerka.sdp.get(SheerkaVariableManager.VARIABLES_ENTRY, "TestSheerkaVariable|my_variable") assert loaded.event_id == context.event.get_digest() assert loaded.key == "my_variable" assert loaded.value == 1 assert loaded.who == "TestSheerkaVariable" assert loaded.parents is None def test_i_can_record_and_load_a_concept(self): sheerka = self.get_sheerka() context = self.get_context(sheerka) concept = Concept("foo").set_value("a", "alpha").set_value(ConceptParts.BODY, 3.14) sheerka.record(context, "TestSheerkaVariable", "my_variable", concept) res = sheerka.load("TestSheerkaVariable", "my_variable") assert res == concept assert res.body == concept.body assert res.a == concept.a def test_i_can_delete_an_entry(self): sheerka = self.get_sheerka() context = self.get_context(sheerka) concept = Concept("foo") sheerka.record(context, "TestSheerkaVariable", "my_variable", concept) assert sheerka.load("TestSheerkaVariable", "my_variable") is not None sheerka.delete(context, "TestSheerkaVariable", "my_variable") assert sheerka.load("TestSheerkaVariable", "my_variable") is None # def test_i_can_get_the_parent_when_modified(self): # sheerka = self.get_sheerka() # context = self.get_context(sheerka) # # sheerka.record(context, "TestSheerkaVariable", "my_variable", 1) # sheerka.record(context, "TestSheerkaVariable", "my_variable", 2) # res = sheerka.load("TestSheerkaVariable", "my_variable") # assert res == 2 # # loaded = sheerka.sdp.get(SheerkaVariableManager.VARIABLES_ENTRY, "TestSheerkaVariable.my_variable") # assert loaded.event_id == context.event.get_digest() # assert loaded.key == "my_variable" # assert loaded.value == 2 # assert loaded.who == "TestSheerkaVariable" # assert loaded.parents == ['8c9ada7bf488d84229f6539f76042431638f16d600fe3b7ec7e7161043a40d59'] # # parent = sheerka.sdp.load_obj(loaded.parents[0]) # assert parent.event_id == context.event.get_digest() # assert parent.key == "my_variable" # assert parent.value == 1 # assert parent.who == "TestSheerkaVariable" # assert parent.parents is None # def test_variable_is_not_persisted_if_the_value_is_the_same(self): # sheerka = self.get_sheerka(singleton=True) # context = self.get_context(sheerka) # # sheerka.record(context, "TestSheerkaVariable", "my_variable", 1) # sheerka.record(context, "TestSheerkaVariable", "my_variable", 1) # # loaded = sheerka.sdp.get(SheerkaVariableManager.VARIABLES_ENTRY, "TestSheerkaVariable.my_variable") # assert loaded.event_id == context.event.get_digest() # assert loaded.key == "my_variable" # assert loaded.value == 1 # assert loaded.who == "TestSheerkaVariable" # assert loaded.parents is None