import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from mas_relevance import assess_facebook_fit
from content_briefing import compute_briefing


def test_practical_mas_topics_can_be_facebook_fit_without_local_emotion():
    examples = [
        "Schimmel und Kondensation im Schlafzimmer: Ursache prüfen statt nur reinigen",
        "Feuchte Wand: erst Ursachenprüfung und Messung, dann sanieren",
        "Muffiger Geruch und fehlender Luftwechsel hinter Möbeln",
        "Fensterkondensation bei feuchter Außenluft verständlich erklärt",
        "CO2-Messung in Wohnräumen als Hinweis auf den Luftwechsel",
        "Ein Sensor ersetzt keine fachliche Einordnung der Raumluft",
        "Ein Lüftungskonzept beginnt mit Hausdaten und Raumdaten",
    ]
    for text in examples:
        score, reason = assess_facebook_fit(text, mas_relevant=True)
        assert score >= 2, (text, score, reason)
        assert reason and "reichweite" not in reason.lower()


def test_facebook_fit_requires_mas_relevance():
    assert assess_facebook_fit("Fußball und Mallorca", mas_relevant=False)[0] == 1
    assert assess_facebook_fit("Konsulat informiert über Termine", mas_relevant=False)[0] == 1


def test_facebook_fit_and_briefing_use_same_content_decision():
    sig = {
        "topic": "Muffiger Geruch und fehlender Luftwechsel hinter Möbeln",
        "short_summary": "Kondensation und Schimmel können entstehen.",
        "signal_category": "feuchte",
        "topic_class": "kern",
        "platform_facebook": 1,
        "platform_linkedin": 2,
        "mas_relevant": 1,
        "mallorca_relevance": 0,
        "score_breakdown": "{}",
    }
    score, reason = assess_facebook_fit(sig["topic"] + " " + sig["short_summary"], mas_relevant=True)
    briefing = compute_briefing(sig)
    assert briefing["briefing_fb_fit"] == {1: "nein", 2: "pruefen", 3: "ja"}[score]
    assert briefing["briefing_fb_reason"] == reason
