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