File size: 2,273 Bytes
290ff9e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
"""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