"""Tests for the canonical knowledge-base loader and registry.""" from ergo_agentic.datasources import DatasourceRegistry, load_parameters from ergo_agentic.datasources.paths import KNOWLEDGE_BASE_FILE from ergo_agentic.domain.enums import ParameterGroup, RiskLevel, SelectionMode def test_load_parameters(): params = load_parameters(KNOWLEDGE_BASE_FILE) assert len(params) == 12 def test_all_groups_present(): params = load_parameters(KNOWLEDGE_BASE_FILE) assert {p.group for p in params} == { ParameterGroup.CHAIR, ParameterGroup.DESK, ParameterGroup.KEYBOARD_MOUSE, ParameterGroup.LAPTOP, ParameterGroup.SCREEN, } def test_every_parameter_has_good_option(): for p in load_parameters(KNOWLEDGE_BASE_FILE): assert any(o.is_good_habit for o in p.options), p.parameter_text def test_option_keys_globally_unique(): keys = [o.key for p in load_parameters(KNOWLEDGE_BASE_FILE) for o in p.options] assert len(keys) == len(set(keys)) def test_registry_lookups(): reg = DatasourceRegistry.from_knowledge_base() opt = reg.get_option("chair-posture-slouching") assert opt is not None assert opt.label == "Slouching" assert not opt.is_good_habit assert opt.risk_level == RiskLevel.MEDIUM assert isinstance(opt.posture_score, int) parent = reg.get_parameter_for_outcome("chair-posture-slouching") assert parent is not None assert parent.parameter_text == "Back support" def test_get_option_metadata_returns_inlined_fields(): reg = DatasourceRegistry.from_knowledge_base() opt = reg.get_option_metadata("chair-armRest-lowerThanElbow") assert opt is not None assert opt.is_good_habit assert opt.risk_level is None assert opt.posture_score == 15 def test_multi_select_detection(): reg = DatasourceRegistry.from_knowledge_base() back_support = reg.get_parameter_for_outcome("chair-posture-slouching") assert back_support is not None assert back_support.selection_mode == SelectionMode.MULTI def test_unknown_outcome_returns_none(): reg = DatasourceRegistry.from_knowledge_base() assert reg.get_option("nonexistent-outcome-key") is None