Files
streamrip-ui/backend/tests/test_discover.py
T
loki 99cfda2b08
CI / backend-tests (push) Successful in 8s
Docker images / backend (push) Successful in 7s
Docker images / frontend (push) Successful in 22s
CI / docker (push) Successful in 3s
feat: mehr-laden paging (suche + entdecken, totals, fallback-skip)
2026-10-04 16:39:16 +02:00

79 lines
2.3 KiB
Python

from fastapi.testclient import TestClient
from app.main import app
c = TestClient(app)
def test_related_artists_mocked(monkeypatch):
from app.api import discover as disc
async def fake_related(artist_id, limit):
return [{"id": "2", "title": "Similar One", "artist": "Similar One", "media_type": "artist"}]
monkeypatch.setattr(disc, "get_related_artists", fake_related)
r = c.get("/api/artist/169/related")
assert r.status_code == 200
assert r.json()["artists"][0]["id"] == "2"
def test_genres_mocked(monkeypatch):
from app.api import discover as disc
async def fake_genres():
return [{"id": 132, "name": "Pop"}]
monkeypatch.setattr(disc, "get_genres", fake_genres)
r = c.get("/api/discover/genres")
assert r.status_code == 200
assert r.json()["genres"][0]["name"] == "Pop"
def test_discover_mocked(monkeypatch):
from app.api import discover as disc
async def fake_discover(kind, genre_id, limit, index=0):
assert kind in ("tracks", "albums", "artists", "playlists", "new")
return [{"id": "1", "title": "X"}], 100
monkeypatch.setattr(disc, "get_discover", fake_discover)
r = c.get("/api/discover", params={"kind": "tracks", "genre_id": 132, "limit": 5})
assert r.status_code == 200
assert len(r.json()["results"]) == 1
assert r.json()["total"] == 100
def test_discover_forwards_index(monkeypatch):
from app.api import discover as disc
seen = {}
async def fake_discover(kind, genre_id, limit, index=0):
seen["index"] = index
return [], 100
monkeypatch.setattr(disc, "get_discover", fake_discover)
r = c.get("/api/discover", params={"kind": "tracks", "index": 24})
assert r.status_code == 200
assert seen["index"] == 24
def test_search_forwards_index(monkeypatch):
from app.services import streamrip_service as svc
seen = {}
async def fake_search(media_type, query, limit, index=0):
seen["index"] = index
return [], 50
monkeypatch.setattr(svc, "search_deezer", fake_search)
r = c.get("/api/search", params={"type": "track", "q": "x", "index": 20})
assert r.status_code == 200
assert seen["index"] == 20
assert r.json()["total"] == 50
def test_discover_rejects_bad_kind():
r = c.get("/api/discover", params={"kind": "nope"})
assert r.status_code == 422