"""Confirmation avant de désactiver le NER (regex-only) — outil médical. Pur : la décision est isolée dans ``confirm_ner_disable(asker)`` ; ``asker`` est injecté (pas de messagebox réel, pas de display). """ from __future__ import annotations from gui_v6.tabs.tab_config import NER_DISABLE_WARNING, confirm_ner_disable def test_confirm_true_when_user_accepts(): assert confirm_ner_disable(lambda: True) is True def test_confirm_false_when_user_declines(): assert confirm_ner_disable(lambda: False) is False def test_confirm_false_when_asker_raises(): def boom(): raise RuntimeError("Tk indisponible") # Sens sûr : une erreur de dialogue ne désactive jamais le NER. assert confirm_ner_disable(boom) is False def test_warning_text_is_explicit_for_medical_use(): txt = NER_DISABLE_WARNING.lower() # L'avertissement DOIT nommer la dégradation : règles/regex + risque noms. assert "règles" in txt or "regex" in txt assert "nom" in txt assert "recommand" in txt # « fortement recommandé »