Replaces the ad-hoc _running_procs dict in api.py with a persistent, inspectable SQLite job queue. Removes old /api/finetune/* routes and _best_cuda_device from api.py. Adds /api/train/* routes (list, create, get, cancel, run SSE, results). 16 new tests all passing.
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
"""Smoke tests for the app factory (app/api.py).
|
|
|
|
Detailed route tests live in test_data_label.py, test_data_fetch.py,
|
|
test_data_corrections.py, test_train.py, and test_dashboard.py.
|
|
"""
|
|
import pytest
|
|
from fastapi.testclient import TestClient
|
|
|
|
|
|
def test_import():
|
|
from app import api # noqa: F401
|
|
|
|
|
|
def test_app_has_required_routes():
|
|
from app.api import app
|
|
paths = {r.path for r in app.routes}
|
|
# Label routes
|
|
assert "/api/queue" in paths
|
|
assert "/api/label" in paths
|
|
assert "/api/skip" in paths
|
|
assert "/api/discard" in paths
|
|
assert "/api/label/undo" in paths
|
|
assert "/api/config/labels" in paths
|
|
assert "/api/stats" in paths
|
|
# Fetch routes
|
|
assert "/api/accounts/test" in paths
|
|
assert "/api/fetch/stream" in paths
|
|
# Train routes
|
|
assert "/api/train/jobs" in paths
|
|
assert "/api/train/results" in paths
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
from app.api import app
|
|
return TestClient(app)
|
|
|
|
|
|
def test_queue_endpoint_reachable(client):
|
|
r = client.get("/api/queue")
|
|
assert r.status_code == 200
|
|
assert "items" in r.json()
|
|
assert "total" in r.json()
|