Files
streamrip-ui/backend/tests/test_playlist.py
T

51 lines
1.3 KiB
Python

from fastapi.testclient import TestClient
from app.main import app
c = TestClient(app)
def test_playlist_detail_mocked(monkeypatch):
from app.api import playlist as pl
async def fake_details(playlist_id):
return {
"id": playlist_id,
"title": "My Mix",
"creator": "Someone",
"description": "desc",
"tracks": [
{"id": "1", "title": "A", "track_number": 1},
{"id": "2", "title": "B", "track_number": 2},
],
}
monkeypatch.setattr(pl, "get_playlist_details", fake_details)
r = c.get("/api/playlist/777")
assert r.status_code == 200
body = r.json()
assert body["title"] == "My Mix"
assert len(body["tracks"]) == 2
def test_playlist_meta_fallback():
import asyncio
from app.services.streamrip_service import _fetch_with_tracks
class FakeApi:
def get_playlist(self, _id):
return {"id": _id, "title": "P"}
def get_playlist_tracks(self, _id):
raise Exception("no data")
class FakeClient:
class client:
api = FakeApi()
meta = asyncio.run(
_fetch_with_tracks(FakeClient(), "playlist", "777", ("get_playlist", "get_playlist_tracks"))
)
assert meta["title"] == "P"
assert meta["tracks"] == []