import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent))
from mas_relevance import assess_linkedin_fit, assess_mas_relevance
def test_search_context_does_not_make_tourism_signal_mas_relevant():
result = assess_mas_relevance(
"Mallorca Urlaub: Diese 20 Fehler vor Ort bereuen viele",
fields={"topic": "Mallorca Urlaub: Diese 20 Fehler vor Ort bereuen viele", "short_summary": "Tipps für Reisende", "source_name": "YouTube-Suche 'Feuchtigkeit Mallorca'", "source_platform": "youtube", "source_type": "youtube"},
)
assert result.relevant is False
def test_technical_mas_topic_is_linkedin_candidate_independent_of_source():
text = "Feuchte Wand sanieren: Aufsteigende Feuchtigkeit im Mauerwerk – Ursachen messen"
for source in ("facebook_public", "rss", "youtube", "meta_ad"):
result = assess_linkedin_fit(text, mas_relevant=True)
assert result[0] >= 2, source
def test_professional_linkedin_score_requires_real_technical_content():
assert assess_linkedin_fit("Mallorca Immobilienmarkt und neue Ferienwohnungen", mas_relevant=True)[0] == 1
assert assess_linkedin_fit("Architekten und Eigentümer auf Mallorca", mas_relevant=True)[0] == 1
assert assess_linkedin_fit("CO2-Sensorik und Monitoring: Raumluftqualität messen", mas_relevant=True)[0] == 3
def test_irrelevant_signal_can_never_be_linkedin_fit():
assert assess_linkedin_fit("Fußball und Atlético Baleares", mas_relevant=False)[0] == 1
def test_spanish_humidity_and_air_circulation_problem_is_linkedin_candidate():
text = (
"Humedad detrás de los muebles: el aire no circula, se forma condensación "
"y aparece moho. Una ventilación mecánica renueva el aire y reduce la humedad."
)
score, reason = assess_linkedin_fit(text, mas_relevant=True)
assert score >= 2
assert "fachlich" in reason.lower() or "technische" in reason.lower() or "técnic" in reason.lower()
def test_linkedin_score_three_requires_analysis_measurement_or_planning():
score, _ = assess_linkedin_fit(
"La humedad afecta a la vivienda y hay moho en la pared", mas_relevant=True
)
assert score == 2
def test_linkedin_reason_is_concrete_not_generic_marketing():
score, reason = assess_linkedin_fit(
"CO2-Sensorik und Monitoring: Raumluftqualität messen", mas_relevant=True
)
assert score == 3
assert "technische" in reason.lower()
assert "reichweite" not in reason.lower()