from services.shared.intents import CONTROL_INTENTS, UNKNOWN_INTENT, normalize_intent def test_control_intent_passes_through_unchanged(): assert normalize_intent("handoff_request") == "handoff_request" assert normalize_intent("kb_answer", known_topic_codes=["VOUCHER_ACTIVATION"]) == "kb_answer" def test_matching_topic_code_passes_through_case_insensitively(): assert normalize_intent("voucher_activation", known_topic_codes=["VOUCHER_ACTIVATION"]) == "VOUCHER_ACTIVATION" assert normalize_intent(" Voucher_Activation ", known_topic_codes=["voucher_activation"]) == "VOUCHER_ACTIVATION" def test_unknown_topic_code_falls_back_to_unknown(): assert normalize_intent("made_up_intent", known_topic_codes=["VOUCHER_ACTIVATION"]) == UNKNOWN_INTENT assert normalize_intent("voucher_activation", known_topic_codes=[]) == UNKNOWN_INTENT def test_empty_or_missing_intent_falls_back_to_unknown(): assert normalize_intent(None) == UNKNOWN_INTENT assert normalize_intent("") == UNKNOWN_INTENT assert normalize_intent(" ") == UNKNOWN_INTENT def test_control_intents_frozenset_matches_documented_values(): assert CONTROL_INTENTS == { "identity_question", "handoff_request", "sensitive_request", "resolution_confirmed", "clarification", "kb_answer", "unknown", }