Files
chat/tests/test_error_ux.py
2026-04-26 14:33:28 -04:00

58 lines
1.7 KiB
Python

from __future__ import annotations
import pytest
from fastapi.testclient import TestClient
from chat.app import app
@pytest.fixture
def client(tmp_path, monkeypatch):
cfg = tmp_path / "config.toml"
cfg.write_text('featherless_api_key = "test"\n')
monkeypatch.setenv("CHAT_CONFIG_PATH", str(cfg))
db = tmp_path / "test.db"
monkeypatch.setenv("CHAT_DB_PATH", str(db))
with TestClient(app) as c:
if hasattr(app.state, "background_worker"):
app.state.background_worker.enabled = False
yield c
def _setup_minimal_state(db_path):
"""Set up enough state so the first-run middleware doesn't redirect."""
from chat.db.connection import open_db
from chat.eventlog.log import append_event
from chat.eventlog.projector import project
with open_db(db_path) as conn:
append_event(
conn,
kind="you_authored",
payload={"name": "Me", "pronouns": "", "persona": ""},
)
append_event(
conn,
kind="bot_authored",
payload={
"id": "bot_a",
"name": "BotA",
"persona": "",
"voice_samples": [],
"traits": [],
"backstory": "",
"initial_relationship_to_you": "",
"kickoff_prose": "",
},
)
project(conn)
def test_404_renders_friendly_page_for_html(client, tmp_path):
_setup_minimal_state(tmp_path / "test.db")
response = client.get("/chats/no_such_chat")
assert response.status_code == 404
body = response.text
assert "404" in body
assert "back to" in body.lower()