Explorer
/proc/1357821/root/tmp/test_aa020_linkedin_fit.py
← Zurück ↓ Download
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()