"""Tests for crisis detection tool."""
import pytest


def test_detect_crisis_none():
    from tools.crisis_tool import detect_crisis
    result = detect_crisis("Hello, how are you today?")
    assert result.level == "NONE"
    assert result.score == 0.0


def test_detect_crisis_critical():
    from tools.crisis_tool import detect_crisis
    result = detect_crisis("I want to kill myself")
    assert result.level == "CRITICAL"
    assert result.score == 1.0
    assert len(result.indicators) > 0
    assert "988" in result.recommended_action


def test_detect_crisis_high():
    from tools.crisis_tool import detect_crisis
    result = detect_crisis("I feel so hopeless about everything, nothing matters")
    assert result.level in ("HIGH", "MEDIUM", "CRITICAL")
    assert result.score > 0


def test_detect_crisis_medium():
    from tools.crisis_tool import detect_crisis
    result = detect_crisis("I feel worthless and broken inside")
    assert result.level in ("MEDIUM", "LOW", "HIGH")
    assert result.score > 0


def test_detect_crisis_low():
    from tools.crisis_tool import detect_crisis
    result = detect_crisis("I'm having a tough time and feeling stressed")
    assert result.level in ("LOW", "NONE")
    assert result.score >= 0


def test_detect_crisis_empty():
    from tools.crisis_tool import detect_crisis
    result = detect_crisis("")
    assert result.level == "NONE"
    result2 = detect_crisis(None)
    assert result2.level == "NONE"


def test_scan_user_message_returns_none_for_safe():
    from tools.crisis_tool import scan_user_message
    result = scan_user_message("What's the weather like?")
    assert result is None


def test_scan_user_message_returns_dict_for_crisis():
    from tools.crisis_tool import scan_user_message
    result = scan_user_message("I want to end it all")
    assert result is not None
    assert "level" in result
    assert "compassion_injection" in result
    assert result["level"] in ("CRITICAL", "HIGH")


def test_tool_handler():
    from tools.crisis_tool import crisis_scan_handler
    import json
    result = crisis_scan_handler({"text": "I feel fine, thanks"})
    data = json.loads(result)
    assert data["level"] == "NONE"
    
    result2 = crisis_scan_handler({"text": "I want to die"})
    data2 = json.loads(result2)
    assert data2["level"] == "CRITICAL"
