fix(ai): les clics ne font plus sauter la conversation au bas (BUG-059); tableaux markdown corrects dans create_pdf (#92)

This commit is contained in:
2026-09-17 13:55:36 -04:00
parent 6a58a59a11
commit 22e9240e4f
14 changed files with 174 additions and 32 deletions
+37
View File
@@ -150,6 +150,43 @@ class TestCreatePdf:
}, confirm=True)
assert (vault / "big.pdf").exists()
def test_markdown_tables_go_through_the_export_pipeline(self, vault, monkeypatch):
# The document-page pipeline (mistune tables + WeasyPrint) must be
# used when available: capture the HTML handed to the PDF generator.
import sys
import types
captured = {}
fake = types.ModuleType("backend.pdf_export")
def fake_build(html, title, **kw):
captured["html"] = html
captured["title"] = title
return "<html>" + html + "</html>"
fake.build_pdf_html = fake_build
fake.generate_pdf = lambda html, title=None, **kw: b"%PDF-fake"
monkeypatch.setitem(sys.modules, "backend.pdf_export", fake)
out = call_tool("create_pdf", _ctx(), {
"vault": "Vault", "path": "table.pdf", "title": "Rapport",
"content": "# T\n\n| a | b |\n|---|---|\n| 1 | 2 |",
}, confirm=True)
assert out.ok
assert "<table>" in captured["html"]
assert captured["title"] == "Rapport"
assert (vault / "table.pdf").read_bytes() == b"%PDF-fake"
def test_reportlab_fallback_when_weasyprint_missing(self, vault, monkeypatch):
# sys.modules[name] = None makes `from backend.pdf_export import …`
# raise ImportError → the simplified renderer must take over.
import sys
monkeypatch.setitem(sys.modules, "backend.pdf_export", None)
call_tool("create_pdf", _ctx(), {
"vault": "Vault", "path": "fb.pdf", "title": "T", "content": "# H\ntexte",
}, confirm=True)
assert (vault / "fb.pdf").read_bytes().startswith(b"%PDF")
class TestVaultSafety:
def test_path_outside_vault_rejected(self, vault):