test(api): add tests for ai suggestion endpoints and helpers

This commit is contained in:
Piotr Oleszczyk 2026-03-03 22:06:33 +01:00
parent 5ad9b66a21
commit 88f3642387
4 changed files with 387 additions and 1 deletions

View file

@ -216,3 +216,60 @@ def test_delete_grooming_schedule(client):
def test_delete_grooming_schedule_not_found(client):
r = client.delete(f"/routines/grooming-schedule/{uuid.uuid4()}")
assert r.status_code == 404
from unittest.mock import patch
def test_suggest_routine(client, session):
with patch("innercontext.api.routines.call_gemini") as mock_gemini:
# Mock the Gemini response
mock_response = type("Response", (), {"text": '{"steps": [{"product_id": null, "action_type": "shaving_razor"}], "reasoning": "because"}'})
mock_gemini.return_value = mock_response
r = client.post(
"/routines/suggest",
json={
"routine_date": "2026-03-03",
"part_of_day": "am",
"notes": "Testing",
"include_minoxidil_beard": True
}
)
assert r.status_code == 200
data = r.json()
assert len(data["steps"]) == 1
assert data["steps"][0]["action_type"] == "shaving_razor"
assert data["reasoning"] == "because"
def test_suggest_batch(client, session):
with patch("innercontext.api.routines.call_gemini") as mock_gemini:
# Mock the Gemini response
mock_response = type("Response", (), {"text": '{"days": [{"date": "2026-03-03", "am_steps": [], "pm_steps": [], "reasoning": "none"}], "overall_reasoning": "batch test"}'})
mock_gemini.return_value = mock_response
r = client.post(
"/routines/suggest-batch",
json={
"from_date": "2026-03-03",
"to_date": "2026-03-04",
"minimize_products": True
}
)
assert r.status_code == 200
data = r.json()
assert len(data["days"]) == 1
assert data["days"][0]["date"] == "2026-03-03"
assert data["overall_reasoning"] == "batch test"
def test_suggest_batch_invalid_date_range(client):
r = client.post(
"/routines/suggest-batch",
json={"from_date": "2026-03-04", "to_date": "2026-03-03"}
)
assert r.status_code == 400
def test_suggest_batch_too_long(client):
r = client.post(
"/routines/suggest-batch",
json={"from_date": "2026-03-01", "to_date": "2026-03-20"}
)
assert r.status_code == 400