Bot & Automation

AI Assistants

/root/hermes-projects/AI Assistants

tests/test_file_delivery.py text
from pathlib import Path

from apps.whatsapp_control_api.app.services.file_delivery import (
    ensure_pdf_delivery,
    has_existing_file_path,
    is_pdf_request,
    summary_refuses_file_delivery,
)


def test_pdf_request_is_detected() -> None:
    assert is_pdf_request("Buatkan saya dokumen PDF profesional tentang AI") is True


def test_refusal_summary_is_detected() -> None:
    summary = "Karena saya adalah asisten berbasis teks, saya tidak bisa langsung mengirimkan file .pdf."
    assert summary_refuses_file_delivery(summary) is True


def test_ensure_pdf_delivery_creates_real_pdf_and_markdown(tmp_path: Path) -> None:
    prompt = "Buatkan saya dokumen PDF profesional tentang Artificial Intelligence."
    summary = (
        "Karena saya adalah asisten berbasis teks, saya tidak bisa langsung mengirimkan file .pdf. "
        "Berikut naskahnya:\n\n# Artificial Intelligence\n\nAI membantu otomasi kerja."
    )

    result = ensure_pdf_delivery("task123", prompt, summary, tmp_path)

    assert len(result.created_files) == 2
    pdf_path = tmp_path / "AI Assistants Outputs" / "task123" / "artificial-intelligence-task123.pdf"
    markdown_path = tmp_path / "AI Assistants Outputs" / "task123" / "artificial-intelligence-task123.md"
    assert pdf_path.exists()
    assert markdown_path.exists()
    assert pdf_path.read_bytes().startswith(b"%PDF-1.4")
    assert str(pdf_path) in result.summary
    assert "saya tidak bisa langsung mengirimkan file" not in result.summary.lower()


def test_existing_pdf_path_skips_fallback(tmp_path: Path) -> None:
    pdf_path = tmp_path / "existing.pdf"
    pdf_path.write_bytes(b"%PDF-1.4\n")
    summary = f"File selesai: {pdf_path}"

    result = ensure_pdf_delivery("task123", "buat pdf", summary, tmp_path)

    assert result.created_files == ()
    assert has_existing_file_path(summary, tmp_path, {".pdf"}) is True