from autoshorts.review.package import ReviewPackage, render_telegram_review_package
from autoshorts.scripting.quality import ScriptQualityScore


def _quality_score() -> ScriptQualityScore:
    return ScriptQualityScore(
        hook_strength=9,
        novelty=8,
        clarity=9,
        retention=8,
        ai_slop_risk=2,
        policy_risk="low",
    )


def test_review_package_contains_required_decision_context_and_commands():
    package = ReviewPackage(
        candidate_id="vid-001",
        title="AI ist ein schlechter Gott, aber ein guter Diener",
        pillar="ai_life_systems",
        duration_seconds=34,
        hook="AI sollte dir dienen, nicht dich führen.",
        script_summary="Drei Szenen zeigen den Unterschied zwischen KI-Hype und kontrolliertem Alltagssystem.",
        visual_concept="Cinematic desk setup, phone automations, calm human-in-control framing.",
        caption="KI als Werkzeug, nicht als Wertekompass.",
        hashtags=("#AI", "#Productivity", "#LifeSystems"),
        platforms=("youtube", "tiktok"),
        quality_score=_quality_score(),
        policy_notes=("No fake earnings claims", "No medical or financial advice"),
        preview_path="data/local_motion_renders/vid-001.mp4",
    )

    text = render_telegram_review_package(package)

    assert "Review: vid-001" in text
    assert "AI ist ein schlechter Gott" in text
    assert "Pillar: ai_life_systems" in text
    assert "Duration: 34s" in text
    assert "Quality: 8.5/10" in text
    assert "AI-slop risk: 2/10" in text
    assert "Policy: No fake earnings claims; No medical or financial advice" in text
    assert "Preview: data/local_motion_renders/vid-001.mp4" in text
    assert "Freigabe alle" in text
    assert "Freigabe YouTube" in text
    assert "Freigabe TikTok" in text
    assert "Ablehnen" in text
    assert "Ändern: <Wunschänderung>" in text


def test_review_package_warns_when_candidate_should_not_render():
    poor_score = ScriptQualityScore(
        hook_strength=5,
        novelty=5,
        clarity=6,
        retention=5,
        ai_slop_risk=8,
        policy_risk="low",
    )
    package = ReviewPackage(
        candidate_id="vid-weak",
        title="4 Tipps für Produktivität",
        pillar="ai_life_systems",
        duration_seconds=28,
        hook="Hier sind vier Tipps.",
        script_summary="Generic advice list.",
        visual_concept="Stock productivity images.",
        caption="Mehr Produktivität im Alltag.",
        hashtags=("#Productivity",),
        platforms=("youtube",),
        quality_score=poor_score,
        policy_notes=(),
        preview_path=None,
    )

    text = render_telegram_review_package(package)

    assert "Render gate: BLOCKED" in text
    assert "nicht automatisch rendern" in text


def test_review_package_omits_platform_specific_commands_for_unlisted_platforms():
    package = ReviewPackage(
        candidate_id="vid-ig",
        title="One visual idea",
        pillar="visual_tests",
        duration_seconds=15,
        hook="One clean idea.",
        script_summary="A short visual test.",
        visual_concept="Single mechanism reveal.",
        caption="A test.",
        hashtags=(),
        platforms=("instagram",),
        quality_score=_quality_score(),
        policy_notes=(),
        preview_path=None,
    )

    text = render_telegram_review_package(package)

    assert "Freigabe Instagram" in text
    assert "Freigabe YouTube" not in text
    assert "Freigabe TikTok" not in text
