2021-12-07 23:54:06 +01:00
|
|
|
import pytest
|
2023-02-04 18:15:14 +01:00
|
|
|
from starlette.testclient import TestClient
|
2021-12-07 23:54:06 +01:00
|
|
|
|
2023-02-04 18:15:14 +01:00
|
|
|
from unwind import create_app, db, imdb, models
|
2021-12-07 23:54:06 +01:00
|
|
|
|
|
|
|
|
app = create_app()
|
|
|
|
|
|
|
|
|
|
|
2023-02-04 18:12:50 +01:00
|
|
|
@pytest.mark.asyncio
|
|
|
|
|
async def test_app(shared_conn: db.Database):
|
2021-12-19 19:30:08 +01:00
|
|
|
async with shared_conn.transaction(force_rollback=True):
|
2021-12-19 19:13:49 +01:00
|
|
|
# https://www.starlette.io/testclient/
|
2021-12-07 23:54:06 +01:00
|
|
|
client = TestClient(app)
|
|
|
|
|
response = client.get("/api/v1/movies")
|
|
|
|
|
assert response.status_code == 403
|
|
|
|
|
|
|
|
|
|
client.auth = "user1", "secret1"
|
|
|
|
|
|
|
|
|
|
response = client.get("/api/v1/movies")
|
|
|
|
|
assert response.status_code == 200
|
|
|
|
|
assert response.json() == []
|
|
|
|
|
|
|
|
|
|
m = models.Movie(
|
|
|
|
|
title="test movie",
|
|
|
|
|
release_year=2013,
|
|
|
|
|
media_type="Movie",
|
|
|
|
|
imdb_id="tt12345678",
|
|
|
|
|
genres={"genre-1"},
|
|
|
|
|
)
|
|
|
|
|
await db.add(m)
|
|
|
|
|
|
|
|
|
|
response = client.get("/api/v1/movies", params={"include_unrated": 1})
|
|
|
|
|
assert response.status_code == 200
|
2021-12-19 19:13:49 +01:00
|
|
|
assert response.json() == [{**models.asplain(m), "user_scores": []}]
|
2021-12-07 23:54:06 +01:00
|
|
|
|
2021-12-08 00:13:05 +01:00
|
|
|
m_plain = {
|
|
|
|
|
"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,
|
|
|
|
|
}
|
|
|
|
|
|
2021-12-07 23:54:06 +01:00
|
|
|
response = client.get("/api/v1/movies", params={"imdb_id": m.imdb_id})
|
|
|
|
|
assert response.status_code == 200
|
2021-12-08 00:13:05 +01:00
|
|
|
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]
|