diff --git a/tests/test_web.py b/tests/test_web.py index 1a6773c..3e56410 100644 --- a/tests/test_web.py +++ b/tests/test_web.py @@ -2,7 +2,7 @@ from starlette.testclient import TestClient import pytest from unwind import create_app -from unwind import db, models +from unwind import db, models, imdb pytestmark = pytest.mark.asyncio @@ -38,8 +38,24 @@ async def test_app(): assert response.status_code == 200 assert response.json() == [{**db.asplain(m), "user_scores": []}] + m_plain = { + "unwind_id": m.id, + "canonical_title": m.title, + "imdb_score": m.imdb_score, + "imdb_votes": m.imdb_votes, + "link": imdb.movie_url(m.imdb_id), + "media_type": m.media_type, + "original_title": m.original_title, + "user_scores": [], + "year": m.release_year, + } + response = client.get("/api/v1/movies", params={"imdb_id": m.imdb_id}) assert response.status_code == 200 - assert response.json() == [db.asplain(m)] + assert response.json() == [m_plain] + + response = client.get("/api/v1/movies", params={"unwind_id": str(m.id)}) + assert response.status_code == 200 + assert response.json() == [m_plain] await db.close_connection_pool() diff --git a/unwind/web.py b/unwind/web.py index efbbb13..8590a24 100644 --- a/unwind/web.py +++ b/unwind/web.py @@ -283,10 +283,27 @@ async def list_movies(request): user_ids |= {user_id} - if imdb_id := params.get("imdb_id"): + imdb_id = params.get("imdb_id") + unwind_id = params.get("unwind_id") + + if imdb_id or unwind_id: # XXX missing support for user_ids and user_scores - movies = [await db.get(Movie, imdb_id=imdb_id)] - resp = [asplain(m) for m in movies] + movies = [await db.get(Movie, id=unwind_id, imdb_id=imdb_id)] + + resp = [ + { + "unwind_id": m["id"], + "canonical_title": m["title"], + "imdb_score": m["imdb_score"], + "imdb_votes": m["imdb_votes"], + "link": imdb.movie_url(m["imdb_id"]), + "media_type": m["media_type"], + "original_title": m["original_title"], + "user_scores": [], + "year": m["release_year"], + } + for m in map(asplain, movies) + ] else: per_page = as_int(params.get("per_page"), max=1000, default=5)