feat(tarot-lab): main.py + 5 라우트 테스트 (총 21 tests 통과)
This commit is contained in:
71
tarot-lab/tests/test_routes.py
Normal file
71
tarot-lab/tests/test_routes.py
Normal file
@@ -0,0 +1,71 @@
|
||||
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
|
||||
Reference in New Issue
Block a user