from autoshorts.content.demo_pipeline import (
    ContentDemoPipelineResult,
    build_ai_life_systems_demo_delivery,
)
from autoshorts.telegram.review_sender import ReviewDelivery


def test_build_ai_life_systems_demo_delivery_runs_full_review_preparation_path():
    result = build_ai_life_systems_demo_delivery()

    assert isinstance(result, ContentDemoPipelineResult)
    assert result.brief.brief_id == "ai_life_systems-ai-weekly-review-routine"
    assert result.script.brief_id == result.brief.brief_id
    assert result.candidate.candidate_id == "ai_life_systems-ai-weekly-review-routine-35s"
    assert result.testbatch.batch_id == "content-demo-ai-life-systems"
    assert [candidate.candidate_id for candidate in result.testbatch.candidates] == [
        "ai_life_systems-ai-weekly-review-routine-35s"
    ]
    assert len(result.review_batch.ready_for_review) == 1
    assert len(result.review_batch.blocked) == 0
    assert len(result.review_batch.invalid) == 0
    assert isinstance(result.delivery, ReviewDelivery)
    assert result.delivery.topic == "review"
    assert result.delivery.side_effects == ()
    assert result.delivery.requires_human_approval is True
    assert "## Review Batch: content-demo-ai-life-systems" in result.delivery.text
    assert "Review: ai_life_systems-ai-weekly-review-routine-35s" in result.delivery.text


def test_build_ai_life_systems_demo_delivery_has_no_send_or_publish_language():
    result = build_ai_life_systems_demo_delivery()
    text = result.delivery.text.casefold()

    assert "publish" not in text
    assert "post" not in text
    assert "send" not in result.delivery.side_effects
