Files
web-page-backend/tarot-lab/tests/test_routes.py

72 lines
2.2 KiB
Python

import pytest
from fastapi.testclient import TestClient
from app.main import app
from app import db as db_module
@pytest.fixture(autouse=True)
def fresh_db(monkeypatch, tmp_path):
db_file = tmp_path / "test_tarot.db"
monkeypatch.setattr(db_module, "DB_PATH", str(db_file))
db_module.init_db()
yield
try:
if db_file.exists():
db_file.unlink()
except PermissionError:
pass
def _save_payload():
return {
"spread_type": "three_card",
"category": "연애",
"question": "Q",
"cards": [{"position": "과거", "card_id": "the-fool", "reversed": False}],
"interpretation_json": {"summary": "S", "cards": [], "interactions": [], "advice": "A", "warning": None, "confidence": "medium"},
"model": "claude-sonnet-4-6",
"tokens_in": 100, "tokens_out": 200, "cost_usd": 0.005,
"confidence": "medium",
}
def test_health():
with TestClient(app) as c:
r = c.get("/health")
assert r.status_code == 200
assert r.json() == {"ok": True}
def test_save_list_get_cycle():
with TestClient(app) as c:
r = c.post("/api/tarot/readings", json=_save_payload())
assert r.status_code == 200
rid = r.json()["id"]
r = c.get("/api/tarot/readings")
assert r.json()["total"] == 1
r = c.get(f"/api/tarot/readings/{rid}")
assert r.json()["category"] == "연애"
def test_patch_favorite_and_note():
with TestClient(app) as c:
rid = c.post("/api/tarot/readings", json=_save_payload()).json()["id"]
r = c.patch(f"/api/tarot/readings/{rid}", json={"favorite": True, "note": "n"})
assert r.status_code == 200
row = c.get(f"/api/tarot/readings/{rid}").json()
assert row["favorite"] == 1
assert row["note"] == "n"
def test_delete():
with TestClient(app) as c:
rid = c.post("/api/tarot/readings", json=_save_payload()).json()["id"]
assert c.delete(f"/api/tarot/readings/{rid}").status_code == 200
assert c.get(f"/api/tarot/readings/{rid}").status_code == 404
def test_get_404():
with TestClient(app) as c:
assert c.get("/api/tarot/readings/9999").status_code == 404