"""Tests for scenario template endpoints and 404 paths.""" from pathlib import Path import pytest from agenteval.web.app import app from agenteval.web.deps import get_db from fastapi.testclient import TestClient from sqlmodel import Session, SQLModel, create_engine @pytest.fixture() def scenarios_client(tmp_path: Path): from agenteval.storage.db import ScenarioDB # noqa: F401 engine = create_engine( f"sqlite:///{tmp_path / 'scenarios_api.db'}", connect_args={"check_same_thread": False}, ) SQLModel.metadata.create_all(engine) session = Session(engine) def override_get_db(): yield session app.dependency_overrides[get_db] = override_get_db with TestClient(app) as client: yield client, session app.dependency_overrides.clear() session.close() engine.dispose() def test_list_scenario_templates(scenarios_client): client, _ = scenarios_client resp = client.get("/api/scenarios/templates") assert resp.status_code == 200 assert isinstance(resp.json(), list) def test_get_nonexistent_template_returns_404(scenarios_client): client, _ = scenarios_client resp = client.get("/api/scenarios/templates/nonexistent") assert resp.status_code == 404 def test_get_nonexistent_scenario_returns_404(scenarios_client): client, _ = scenarios_client resp = client.get("/api/scenarios/nonexistent") assert resp.status_code == 404 def test_update_nonexistent_scenario_returns_404(scenarios_client): client, _ = scenarios_client resp = client.put("/api/scenarios/nonexistent", json={"name": "test"}) assert resp.status_code == 404 def test_delete_nonexistent_scenario_returns_404(scenarios_client): client, _ = scenarios_client resp = client.delete("/api/scenarios/nonexistent") assert resp.status_code == 404