from core.concept import Concept, ConceptParts 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() context = self.get_context(sheerka) sheerka.record(context, "TestSheerkaVariable", "my_variable", 1) res = sheerka.load("TestSheerkaVariable", "my_variable") assert res == 1 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_prop("a", "alpha").set_metadata_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 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() 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