Green: adapt output schema for 'movie' and 'count'

This commit is contained in:
Colin Goutte 2023-08-27 18:17:17 +02:00
parent 4acf79a0dd
commit daec71fe70
4 changed files with 24 additions and 20 deletions

7
dev.py
View File

@ -114,8 +114,11 @@ async def delete_movie(id_: str, db: Session = Depends(get_db)) -> None:
@app.get("/movies/")
async def list_movie(db: Session = Depends(get_db)) -> list[schemas.MovieObject]:
return crud.get_all_movies(db)
async def list_movie(db: Session = Depends(get_db)) -> schemas.MovieObjectsOut:
movies = crud.get_all_movies(db)
count = len(movies)
return {"movies": movies, "count": count}
if __name__ == "__main__":

View File

@ -14,3 +14,8 @@ class MoviePayload(BaseModel):
class MovieObject(MoviePayload):
id: int | str
class MovieObjectsOut(BaseModel):
movies: list[MovieObject]
count: int

View File

@ -124,9 +124,9 @@ class BaseCrud(unittest.TestCase):
response = client.post("/movies/", json=self.create_payload)
assert response.status_code == 200
movies = client.get("/movies/")
movies = client.get("/movies/").json()["movies"]
movies_by_title = {m["title"]: m for m in movies.json()}
movies_by_title = {m["title"]: m for m in movies}
found = list(movies_by_title[title] for title in names)
assert all(movies_by_title[title] for title in names)
@ -147,12 +147,8 @@ class BaseCrud(unittest.TestCase):
movies = client.get("/movies/").json()
assert insinstance(movies["count"], int)
assert insinstance(movies["movies"], list)
movies_by_title = {m["title"]: m for m in movies.json()}
found = list(movies_by_title[title] for title in names)
assert all(movies_by_title[title] for title in names)
assert isinstance(movies["count"], int)
assert isinstance(movies["movies"], list)
class ApiTestCase(unittest.TestCase):

View File

@ -117,8 +117,8 @@ def test_list_movies():
names.append(name)
crud.create_movie(db, title=name, genres=["Animated", "Paropaganda"])
movies = client.get("movies")
movies_by_title = {m["title"]: m for m in movies.json()}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
assert all(movies_by_title[name] for name in names)
@ -128,16 +128,16 @@ def test_sample_import_toy_story():
movie_title = "Toy Story"
file_path = "input_data/movies_metadata_short.csv"
movies = client.get("movies")
movies_by_title = {m["title"]: m for m in movies.json()}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
assert movie_title not in movies_by_title, "The movie should not be pre existing"
with db_context() as db:
fill_db(db, file_path)
movies = client.get("movies")
movies_by_title = {m["title"]: m for m in movies.json()}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
toy_story = movies_by_title["Toy Story"]
@ -156,12 +156,12 @@ def test_title_is_taken_form_original_title_is_missing():
file_path = "utests/movie_error_missing_title.csv"
file_path = "input_data/movies_metadata.csv"
movies = client.get("movies")
movies_by_title = {m["title"]: m for m in movies.json()}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
assert movie_title not in movies_by_title, "The movie should not be pre existing"
with db_context() as db:
fill_db(db, file_path, sample_rate=1)
movies = client.get("movies")
movies_by_title = {m["title"]: m for m in movies.json()}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}