docs-qa-backend / tests /test_api.py
capcut8128's picture
Upload 5 files
64a1c56 verified
Raw History Blame Contribute Delete
1.41 kB
from fastapi.testclient import TestClient
from app import rag
from app.main import app
client = TestClient(app) # no `with`: skips model warm-up
def upload(name, text):
return client.post("/documents", files={"file": (name, text.encode(), "text/plain")})
def test_upload_list_ask_delete(monkeypatch):
r = upload("notes.txt", "First page about apples.\fSecond page about oranges and juice.")
assert r.status_code == 200 and r.json()["duplicate"] is False
docs = client.get("/documents").json()
assert docs[0]["status"] == "ready" and docs[0]["pages"] == 2
assert upload("notes.txt", "First page about apples.\fSecond page about oranges and juice.").json()["duplicate"]
monkeypatch.setattr(rag.llm, "chat", lambda *a, **k: "Oranges and juice [1]")
r = client.post("/ask", json={"question": "what is on page 2?", "history": []})
body = r.json()
assert r.status_code == 200 and body["mode"] == "page_lookup" and body["sources"][0]["page"] == 2
assert client.delete(f"/documents/{docs[0]['doc_id']}").status_code == 200
assert client.get("/documents").json() == []
def test_ask_without_documents_gives_409():
r = client.post("/ask", json={"question": "hello?"})
assert r.status_code == 409
def test_bad_file_type():
r = client.post("/documents", files={"file": ("x.exe", b"abc", "application/octet-stream")})
assert r.status_code == 400