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