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