from core.builtin_concepts import BuiltinConcepts from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka class TestSheerkaHasAManager(TestUsingMemoryBasedSheerka): def test_i_can_set_hasa(self): sheerka, context, king, kingdom = self.init_concepts("king", "kingdom") king_instance = sheerka.new("king") res = sheerka.set_hasa(context, king_instance, kingdom) assert res.status # when global truth is not activated, only the current instance is modified another_king = sheerka.get_by_key("king") assert not another_king.get_prop(BuiltinConcepts.HASA) == {kingdom} assert not sheerka.hasa(another_king, kingdom) def test_i_cannot_set_the_same_attribute_twice(self): sheerka, context, king, kingdom = self.init_concepts("king", "kingdom") king_instance = sheerka.new("king") sheerka.set_hasa(context, king_instance, kingdom) res = sheerka.set_hasa(context, king_instance, kingdom) assert not res.status assert sheerka.isinstance(res.body, BuiltinConcepts.PROPERTY_ALREADY_DEFINED) assert res.body.property_name == BuiltinConcepts.HASA assert res.body.property_value == kingdom assert res.body.concept == king_instance def test_i_can_set_hasa_when_global_truth_is_activated(self): sheerka, context, king, kingdom = self.init_test(global_truth=True).with_concepts( "king", "kingdom").unpack() res = sheerka.set_hasa(context, sheerka.new("king"), kingdom) assert res.status another_king = sheerka.get_by_key("king") assert another_king.get_prop(BuiltinConcepts.HASA) == {kingdom} # check that the definition of the concept has been updated assert sheerka.hasa(sheerka.new("king"), kingdom) def test_i_cannot_set_the_same_attribute_twice_when_global_truth_is_activated(self): sheerka, context, king, kingdom = self.init_test(global_truth=True).with_concepts( "king", "kingdom").unpack() sheerka.set_hasa(context, sheerka.new("king"), kingdom) res = sheerka.set_hasa(context, sheerka.new("king"), kingdom) assert not res.status assert sheerka.isinstance(res.body, BuiltinConcepts.PROPERTY_ALREADY_DEFINED) assert res.body.property_name == BuiltinConcepts.HASA assert res.body.property_value == kingdom assert res.body.concept == sheerka.new("king")