51 lines
1.3 KiB
Python
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"] == []
|