def test_live_recent_matches(client): r = client.get("/api/tss/live?limit=10") assert r.json()["matches"][0]["session_id"] == "sess1" def test_match_with_rosters(client): r = client.get("/api/tss/match/sess1") assert r.status_code == 200 body = r.json() assert body["match"]["mission_name"].startswith("Gladiators") slots = {t["team_slot"] for t in body["teams"]} assert slots == {"1", "2"} win = next(t for t in body["teams"] if t["team_slot"] == "1") assert win["is_winner"] is True assert win["players"][0]["UID"] == "148919027" def test_match_unknown_404(client): assert client.get("/api/tss/match/nope").status_code == 404 def test_scoreboard_includes_logs(client): r = client.get("/api/tss/match/sess1/scoreboard") assert r.status_code == 200 assert r.json()["logs"]["available"] is True def test_matches_search_by_player(client): r = client.get("/api/tss/matches/search?player=148919027") assert r.json()["matches"][0]["session_id"] == "sess1" def test_maps_distinct(client): maps = client.get("/api/tss/maps").json()["maps"] assert any(m["mission_name"].startswith("Gladiators") for m in maps)