Aniworld/tests/api/test_anime_endpoints.py

75 lines
1.9 KiB
Python

from fastapi.testclient import TestClient
from src.server.fastapi_app import app
class FakeSerie:
def __init__(self, key, name, folder, episodeDict=None):
self.key = key
self.name = name
self.folder = folder
self.episodeDict = episodeDict or {}
class FakeSeriesApp:
def __init__(self):
self.List = self
self._items = [FakeSerie("1", "Test Show", "test_show", {1: [1, 2]}), FakeSerie("2", "Complete Show", "complete_show", {})]
def GetMissingEpisode(self):
return [s for s in self._items if s.episodeDict]
def GetList(self):
return self._items
def ReScan(self, callback):
# simulate rescan
callback()
def test_list_anime_override_dependency(monkeypatch):
fake = FakeSeriesApp()
def _get_series_app():
return fake
app.dependency_overrides = {"src.server.utils.dependencies.get_series_app": _get_series_app}
client = TestClient(app)
resp = client.get("/api/v1/anime/")
assert resp.status_code == 200
data = resp.json()
assert isinstance(data, list)
assert any(item["title"] == "Test Show" for item in data)
def test_get_anime_detail(monkeypatch):
fake = FakeSeriesApp()
def _get_series_app():
return fake
app.dependency_overrides = {"src.server.utils.dependencies.get_series_app": _get_series_app}
client = TestClient(app)
resp = client.get("/api/v1/anime/1")
assert resp.status_code == 200
data = resp.json()
assert data["title"] == "Test Show"
assert "1-1" in data["episodes"]
def test_rescan(monkeypatch):
fake = FakeSeriesApp()
def _get_series_app():
return fake
app.dependency_overrides = {"src.server.utils.dependencies.get_series_app": _get_series_app}
client = TestClient(app)
resp = client.post("/api/v1/anime/rescan")
assert resp.status_code == 200
data = resp.json()
assert data["success"] is True