|
|
|
@@ -1,5 +1,6 @@
|
|
|
|
|
from core.builtin_concepts import BuiltinConcepts
|
|
|
|
|
from core.concept import Concept
|
|
|
|
|
from core.sheerka.services.SheerkaSetsManager import SheerkaSetsManager
|
|
|
|
|
|
|
|
|
|
from tests.TestUsingFileBasedSheerka import TestUsingFileBasedSheerka
|
|
|
|
|
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
|
|
|
@@ -15,12 +16,12 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
)
|
|
|
|
|
assert sheerka.add_concept_to_set(context, foo, group).status
|
|
|
|
|
|
|
|
|
|
group_elements = sheerka.cache_manager.get(sheerka.CONCEPTS_GROUPS_ENTRY, group.id)
|
|
|
|
|
group_elements = sheerka.cache_manager.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY, group.id)
|
|
|
|
|
assert group_elements == {foo.id}
|
|
|
|
|
|
|
|
|
|
# it can be persisted
|
|
|
|
|
sheerka.cache_manager.commit(context)
|
|
|
|
|
assert sheerka.sdp.get(sheerka.CONCEPTS_GROUPS_ENTRY, group.id) == {foo.id}
|
|
|
|
|
assert sheerka.sdp.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY, group.id) == {foo.id}
|
|
|
|
|
|
|
|
|
|
def test_i_cannot_add_the_same_concept_twice_in_a_set(self):
|
|
|
|
|
sheerka, context, foo, group = self.init_concepts(Concept("foo"), Concept("group"))
|
|
|
|
@@ -34,7 +35,7 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
assert res.body.body == foo
|
|
|
|
|
assert res.body.concept_set == group
|
|
|
|
|
|
|
|
|
|
all_entries = sheerka.cache_manager.get(sheerka.CONCEPTS_GROUPS_ENTRY, group.id)
|
|
|
|
|
all_entries = sheerka.cache_manager.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY, group.id)
|
|
|
|
|
assert all_entries == {foo.id}
|
|
|
|
|
|
|
|
|
|
def test_i_can_have_multiple_groups(self):
|
|
|
|
@@ -52,12 +53,12 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
assert sheerka.add_concept_to_set(context, bar, group2).status
|
|
|
|
|
assert sheerka.add_concept_to_set(context, baz, group2).status
|
|
|
|
|
|
|
|
|
|
assert sheerka.cache_manager.get(sheerka.CONCEPTS_GROUPS_ENTRY, group1.id) == {foo.id, bar.id}
|
|
|
|
|
assert sheerka.cache_manager.get(sheerka.CONCEPTS_GROUPS_ENTRY, group2.id) == {baz.id, bar.id}
|
|
|
|
|
assert sheerka.cache_manager.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY, group1.id) == {foo.id, bar.id}
|
|
|
|
|
assert sheerka.cache_manager.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY, group2.id) == {baz.id, bar.id}
|
|
|
|
|
|
|
|
|
|
# I can save in db
|
|
|
|
|
sheerka.cache_manager.commit(context)
|
|
|
|
|
assert sheerka.sdp.get(sheerka.CONCEPTS_GROUPS_ENTRY) == {
|
|
|
|
|
assert sheerka.sdp.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY) == {
|
|
|
|
|
'1004': {'1001', '1002'}, '1005': {'1002', '1003'}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -95,7 +96,8 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
sheerka, context, foo, bar, group1, group2 = self.init_concepts(
|
|
|
|
|
"foo", "bar", "group1", Concept("group2", body="group1"))
|
|
|
|
|
|
|
|
|
|
sheerka.sets_handler.add_concepts_to_set(context, [foo, bar], group1)
|
|
|
|
|
service = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
service.add_concepts_to_set(context, [foo, bar], group1)
|
|
|
|
|
|
|
|
|
|
assert sheerka.isaset(context, group2)
|
|
|
|
|
assert set(sheerka.get_set_elements(context, group2)) == {foo, bar}
|
|
|
|
@@ -110,7 +112,8 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
Concept("number"),
|
|
|
|
|
Concept("sub_number", body="number", where="number < 4")
|
|
|
|
|
)
|
|
|
|
|
sheerka.sets_handler.add_concepts_to_set(context, [one, two, three, four, five], number)
|
|
|
|
|
service = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
service.add_concepts_to_set(context, [one, two, three, four, five], number)
|
|
|
|
|
|
|
|
|
|
assert sheerka.isaset(context, sub_number)
|
|
|
|
|
assert set(sheerka.get_set_elements(context, sub_number)) == {one, two, three}
|
|
|
|
@@ -126,7 +129,8 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
Concept("sub_number", body="number", where="number < 4"),
|
|
|
|
|
Concept("sub_sub_number", body="sub_number", where="sub_number > 2")
|
|
|
|
|
)
|
|
|
|
|
sheerka.sets_handler.add_concepts_to_set(context, [one, two, three, four, five], number)
|
|
|
|
|
service = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
service.add_concepts_to_set(context, [one, two, three, four, five], number)
|
|
|
|
|
|
|
|
|
|
assert sheerka.isaset(context, sub_sub_number)
|
|
|
|
|
assert set(sheerka.get_set_elements(context, sub_sub_number)) == {three}
|
|
|
|
@@ -149,7 +153,8 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
Concept("number"),
|
|
|
|
|
Concept("sub_number", body="number", where="number < 4")
|
|
|
|
|
)
|
|
|
|
|
sheerka.sets_handler.add_concepts_to_set(context, [one, two, three, four, five], number)
|
|
|
|
|
service = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
service.add_concepts_to_set(context, [one, two, three, four, five], number)
|
|
|
|
|
|
|
|
|
|
assert sheerka.isaset(context, sub_number)
|
|
|
|
|
assert set(sheerka.get_set_elements(context, sub_number)) == {one, three}
|
|
|
|
@@ -170,8 +175,8 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
Concept("number"),
|
|
|
|
|
Concept("sub_number", body="number", where="number >= 20")
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
sheerka.sets_handler.add_concepts_to_set(context, [one, two, twenty, twenties], number)
|
|
|
|
|
service = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
service.add_concepts_to_set(context, [one, two, twenty, twenties], number)
|
|
|
|
|
|
|
|
|
|
assert sheerka.isaset(context, sub_number)
|
|
|
|
|
assert sheerka.get_set_elements(context, sub_number) == [twenty] # what is expected ?
|
|
|
|
@@ -195,8 +200,8 @@ class TestSheerkaSetsManager(TestUsingMemoryBasedSheerka):
|
|
|
|
|
Concept("number"),
|
|
|
|
|
create_new=True
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
sheerka.sets_handler.add_concepts_to_set(context, [one, two, twenty, twenties], number)
|
|
|
|
|
service = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
service.add_concepts_to_set(context, [one, two, twenty, twenties], number)
|
|
|
|
|
assert sheerka.isinset(twenties, number)
|
|
|
|
|
|
|
|
|
|
twenty_one = sheerka.evaluate_user_input("twenty one", "")[0].body
|
|
|
|
@@ -264,7 +269,7 @@ class TestSheerkaSetsManagerUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
|
|
|
|
assert set(sheerka.get_set_elements(context, group)) == {foo, bar}
|
|
|
|
|
|
|
|
|
|
sheerka.cache_manager.commit(context) # save in db
|
|
|
|
|
all_entries = sheerka.sdp.get(sheerka.CONCEPTS_GROUPS_ENTRY) # check the db
|
|
|
|
|
all_entries = sheerka.sdp.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY) # check the db
|
|
|
|
|
assert all_entries == {
|
|
|
|
|
group.id: {foo.id, bar.id}
|
|
|
|
|
}
|
|
|
|
@@ -275,15 +280,16 @@ class TestSheerkaSetsManagerUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
|
|
|
|
foo4 = Concept("foo4")
|
|
|
|
|
for c in [foo3, foo4]:
|
|
|
|
|
sheerka.create_new_concept(context, c)
|
|
|
|
|
|
|
|
|
|
res = sheerka.sets_handler.add_concepts_to_set(context, (foo3, foo4), group)
|
|
|
|
|
|
|
|
|
|
sets_handler = sheerka.services[SheerkaSetsManager.NAME]
|
|
|
|
|
res = sets_handler.add_concepts_to_set(context, (foo3, foo4), group)
|
|
|
|
|
assert res.status
|
|
|
|
|
|
|
|
|
|
# I can get the elements
|
|
|
|
|
assert set(sheerka.get_set_elements(context, group)) == {foo, bar, foo3, foo4}
|
|
|
|
|
|
|
|
|
|
sheerka.cache_manager.commit(context) # save in db
|
|
|
|
|
all_entries = sheerka.sdp.get(sheerka.CONCEPTS_GROUPS_ENTRY) # check the db
|
|
|
|
|
all_entries = sheerka.sdp.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY) # check the db
|
|
|
|
|
assert all_entries == {
|
|
|
|
|
group.id: {foo.id, bar.id, foo3.id, foo4.id}
|
|
|
|
|
}
|
|
|
|
@@ -322,7 +328,7 @@ class TestSheerkaSetsManagerUsingFileBasedSheerka(TestUsingFileBasedSheerka):
|
|
|
|
|
|
|
|
|
|
# they are both in the same group
|
|
|
|
|
sheerka = self.get_sheerka()
|
|
|
|
|
all_entries = sheerka.sdp.get(sheerka.CONCEPTS_GROUPS_ENTRY)
|
|
|
|
|
all_entries = sheerka.sdp.get(SheerkaSetsManager.CONCEPTS_GROUPS_ENTRY)
|
|
|
|
|
assert all_entries == {
|
|
|
|
|
group.id: {foo.id, bar.id}
|
|
|
|
|
}
|
|
|
|
|