feat: T03+T04 backend - FastAPI, DB models, Rentman integration, admin auth, APScheduler

This commit is contained in:
Implementation Engineer
2026-07-09 01:36:46 +02:00
parent 3bfa54b4b3
commit 88cff68f73
78 changed files with 2174 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
"""Tests for equipment router (T03)."""
import pytest
@pytest.mark.asyncio
async def test_list_equipment(client, seeded_equipment):
resp = await client.get("/api/equipment?page=1&page_size=10")
assert resp.status_code == 200
data = resp.json()
assert "items" in data
assert "total" in data
assert "page" in data
assert "page_size" in data
assert "total_pages" in data
assert data["total"] == 3
assert len(data["items"]) == 3
@pytest.mark.asyncio
async def test_search_equipment(client, seeded_equipment):
resp = await client.get("/api/equipment?search=K2")
assert resp.status_code == 200
data = resp.json()
assert data["total"] == 1
assert "K2" in data["items"][0]["name"]
@pytest.mark.asyncio
async def test_filter_category(client, seeded_equipment):
resp = await client.get("/api/equipment?category=Lautsprecher")
assert resp.status_code == 200
data = resp.json()
assert data["total"] == 2
for item in data["items"]:
assert item["category"] == "Lautsprecher"
@pytest.mark.asyncio
async def test_sort_name_asc(client, seeded_equipment):
resp = await client.get("/api/equipment?sort=name_asc")
assert resp.status_code == 200
data = resp.json()
names = [item["name"] for item in data["items"]]
assert names == sorted(names)
@pytest.mark.asyncio
async def test_sort_name_desc(client, seeded_equipment):
resp = await client.get("/api/equipment?sort=name_desc")
assert resp.status_code == 200
data = resp.json()
names = [item["name"] for item in data["items"]]
assert names == sorted(names, reverse=True)
@pytest.mark.asyncio
async def test_categories(client, seeded_equipment):
resp = await client.get("/api/equipment/categories")
assert resp.status_code == 200
cats = resp.json()
assert "Lautsprecher" in cats
assert "Subwoofer" in cats
@pytest.mark.asyncio
async def test_equipment_detail(client, seeded_equipment):
resp = await client.get(f"/api/equipment/{seeded_equipment[0].id}")
assert resp.status_code == 200
data = resp.json()
assert data["name"] == "L-Acoustics K2"
assert data["brand"] == "L-Acoustics"
@pytest.mark.asyncio
async def test_equipment_not_found(client, seeded_equipment):
resp = await client.get("/api/equipment/999999")
assert resp.status_code == 404