2024-04-18 09:06:42 +00:00
|
|
|
from co3.components import Relation
|
|
|
|
|
|
|
|
from setups import vegetables as veg
|
|
|
|
|
|
|
|
|
|
|
|
def test_mapper_getters():
|
|
|
|
veg_comp = veg.vegetable_schema.get_component('vegetable')
|
|
|
|
tom_comp = veg.vegetable_schema.get_component('tomato')
|
|
|
|
|
2024-04-18 19:31:16 +00:00
|
|
|
assert veg.vegetable_mapper.get_attr_comp(veg.Vegetable) is veg_comp
|
|
|
|
assert veg.vegetable_mapper.get_attr_comp(veg.Tomato) is tom_comp
|
2024-04-18 09:06:42 +00:00
|
|
|
|
|
|
|
tom_aging = veg.vegetable_schema.get_component('tomato_aging_states')
|
|
|
|
tom_cooking = veg.vegetable_schema.get_component('tomato_cooking_states')
|
|
|
|
|
2024-04-18 19:31:16 +00:00
|
|
|
assert veg.vegetable_mapper.get_coll_comp(veg.Tomato, 'aging') is tom_aging
|
|
|
|
assert veg.vegetable_mapper.get_coll_comp(veg.Tomato, 'cooking') is tom_cooking
|
2024-04-18 09:06:42 +00:00
|
|
|
|
|
|
|
def test_mapper_attach():
|
|
|
|
assert veg.vegetable_mapper.attach(
|
|
|
|
veg.Tomato,
|
|
|
|
'tomato',
|
|
|
|
coll_groups={
|
|
|
|
'aging': 'tomato_aging_states',
|
|
|
|
'cooking': 'tomato_cooking_states',
|
|
|
|
},
|
|
|
|
) is None
|
|
|
|
|
|
|
|
def test_mapper_attach_many():
|
|
|
|
assert veg.vegetable_mapper.attach_many(
|
|
|
|
[veg.Vegetable, veg.Tomato],
|
|
|
|
lambda t: f'{t.__name__.lower()}'
|
|
|
|
) is None
|
|
|
|
|
|
|
|
def test_mapper_collect():
|
|
|
|
tomato = veg.Tomato('t1', 10)
|
|
|
|
receipts = veg.vegetable_mapper.collect(tomato)
|
|
|
|
|
|
|
|
assert len(receipts) == 2
|
|
|
|
|
|
|
|
# attempt to retrieve receipts one at a time
|
|
|
|
res1 = veg.vegetable_mapper.collector.collect_inserts([receipts[0]])
|
|
|
|
|
|
|
|
assert len(res1) == 1 # should be just one match
|
|
|
|
assert len(res1[next(iter(res1.keys()))]) == 1 # and one dict for matching comp
|
|
|
|
|
|
|
|
# try again, check no persistent match
|
|
|
|
res1 = veg.vegetable_mapper.collector.collect_inserts([receipts[0]])
|
|
|
|
|
|
|
|
assert len(res1) == 0 # should be no matches for the same receipt
|
|
|
|
|
|
|
|
res2 = veg.vegetable_mapper.collector.collect_inserts([receipts[1]])
|
|
|
|
|
|
|
|
assert len(res2) == 1
|
|
|
|
assert len(res2[next(iter(res2.keys()))]) == 1
|
|
|
|
|