"""Unit tests for the deterministic coaching-preference generator.""" from app.services.coaching import ALLOWED, generate_preferences def test_gut_defaults_are_direct_and_high_friction(): p = generate_preferences({"triad": "gut"}) assert p["coaching_style"] == "direct" assert p["friction_tolerance"] == "high" assert p["prefer_questions_over_directives"] is False def test_head_defaults_are_reflective_and_questions(): p = generate_preferences({"triad": "head"}) assert p["coaching_style"] == "reflective" assert p["coaching_frequency"] == "biweekly" assert p["prefer_questions_over_directives"] is True def test_heart_defaults_are_warm_low_threshold(): p = generate_preferences({"triad": "heart"}) assert p["coaching_style"] == "warm" assert p["misalignment_threshold"] == "low" def test_unknown_triad_uses_gentle_fallback(): p = generate_preferences({"triad": None}) assert p["coaching_style"] == "warm" assert p["prefer_questions_over_directives"] is True def test_all_generated_values_are_within_allowed_sets(): for triad in ("gut", "heart", "head", None, "weird"): p = generate_preferences({"triad": triad}) for field, allowed in ALLOWED.items(): assert p[field] in allowed, (triad, field, p[field]) assert isinstance(p["prefer_questions_over_directives"], bool)