75 lines
1.9 KiB
Python
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
|