54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
"""Integration test for ECP rejection producing zero Markdown files covering scenario OUT-008."""
|
|
|
|
import asyncio
|
|
import json
|
|
from pathlib import Path
|
|
|
|
from src.runtime.cli.consolidate import run_consolidation
|
|
|
|
|
|
def test_ecp_rejection_flow_produces_zero_markdown(tmp_path: Path):
|
|
# Setup non-related article
|
|
non_related_article = {
|
|
"crawled_url": "https://example.com/art_recipe",
|
|
"selected_extractor": "trafilatura",
|
|
"input_meta": {
|
|
"titulo": "Receita de Bolo de Cenoura",
|
|
"url": "https://example.com/art_recipe",
|
|
},
|
|
"trafilatura": {
|
|
"title": "Receita de Bolo de Cenoura",
|
|
"canonical_url": "https://example.com/art_recipe",
|
|
"body_text": "# Receita de Bolo de Cenoura\n\nMisture as cenouras raladas com ovos, farinha e açúcar no liquidificador e asse por 40 minutos.",
|
|
},
|
|
}
|
|
art_file = tmp_path / "article_unrelated.json"
|
|
art_file.write_text(json.dumps(non_related_article), encoding="utf-8")
|
|
|
|
ecp_file = Path("examples/sample_ecp_snapshot.json")
|
|
|
|
# Custom config outputting to tmp_path
|
|
cfg_data = json.loads(Path("runtime_config.local.json").read_text(encoding="utf-8"))
|
|
out_dir = tmp_path / "output_articles"
|
|
db_file = tmp_path / "test_runtime.db"
|
|
cfg_data["paths"]["output_dir"] = str(out_dir)
|
|
cfg_data["paths"]["sqlite_db"] = str(db_file)
|
|
cfg_file = tmp_path / "custom_config.json"
|
|
cfg_file.write_text(json.dumps(cfg_data), encoding="utf-8")
|
|
|
|
exit_code = asyncio.run(run_consolidation(art_file, ecp_file, cfg_file))
|
|
assert exit_code == 0
|
|
|
|
# Verify zero .md files exist in output directory
|
|
md_files = list(out_dir.glob("*.md"))
|
|
assert len(md_files) == 0, f"Expected 0 Markdown files on rejected ECP, found: {md_files}"
|
|
|
|
# Verify .result.json exists with final_status 'rejected_ecp' and generate_markdown False
|
|
result_files = list(out_dir.glob("*.result.json"))
|
|
assert len(result_files) == 1
|
|
manifest = json.loads(result_files[0].read_text(encoding="utf-8"))
|
|
assert manifest["final_status"] == "rejected_ecp"
|
|
assert manifest["generate_markdown"] is False
|
|
assert manifest["markdown_path"] is None
|
|
assert manifest["markdown_hash"] is None
|