From a030fb0b4f719b6f0be285b561f9a8c30b540a41 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Fri, 25 Aug 2023 22:58:09 +0200 Subject: [PATCH] Green: we can get simple attributes back and forth --- crud.py | 18 ++++++++++++++++-- dev.py | 15 ++++++++++----- models.py | 1 - utests/test_api.py | 15 ++++++--------- utests/test_sql_database.py | 14 +++++++------- 5 files changed, 39 insertions(+), 24 deletions(-) diff --git a/crud.py b/crud.py index 41f8535..f9c20a8 100644 --- a/crud.py +++ b/crud.py @@ -5,8 +5,22 @@ import models # import schemas -def create_movie(db: Session, name: str, genres: list[str], description: str = ""): - db_movie = models.Movie(name=name, genres=str(genres), description=description) +def create_movie( + db: Session, + *, + title: str, + genres: list[str], + description: str = "", + vote_average: float | None = None, + vote_count: int | None = None +): + db_movie = models.Movie( + title=title, + genres=str(genres), + description=description, + vote_average=vote_average, + vote_count=vote_count, + ) db.add(db_movie) db.commit() db.refresh(db_movie) diff --git a/dev.py b/dev.py index d106735..1a1596a 100644 --- a/dev.py +++ b/dev.py @@ -34,11 +34,16 @@ async def create_movie( data = await request.json() except: data = {} - name = name or data["name"] - genres = data.get("genres", ["Unknown"]) - description = data.get("description", "") - movie = crud.create_movie(db, name=name, genres=genres, description=description) - out = {"message": f"Created {movie.name} XX", "id": movie.id} + crud_params = dict( + genres=data.get("genres", ["Unknown"]), + description=data.get("description", ""), + title=data.get("title", ""), + vote_average=data.get("vote_average"), + vote_count=data.get("vote_count"), + ) + + movie = crud.create_movie(db, **crud_params) + out = {"message": f"Created {movie.title} XX", "id": movie.id} return out diff --git a/models.py b/models.py index d8147d1..59e1640 100644 --- a/models.py +++ b/models.py @@ -7,7 +7,6 @@ class Movie(Base): id = Column(Integer, primary_key=True, index=True) - name = Column(String, index=True) title = Column(String, index=True) vote_count = Column(Integer) diff --git a/utests/test_api.py b/utests/test_api.py index b00ebd9..5d3033a 100644 --- a/utests/test_api.py +++ b/utests/test_api.py @@ -65,24 +65,24 @@ def test_list_movies(): name = rand_name() names.append(name) - response = client.post("/movies/", json={"name": name}) + response = client.post("/movies/", json={"title": name}) assert response.status_code == 200 movies = client.get("/movies/") - movies_by_name = {m["name"]: m for m in movies.json()} - found = list(movies_by_name[name] for name in names) - assert all(movies_by_name[name] for name in names) + 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) def test_create_movie_api(): name = f"rand_{random.randint(1, 1000)}" - response = client.post("/movies/", json={"name": name}) + response = client.post("/movies/", json={"title": name}) assert response.status_code == 200 movie_id = response.json()["id"] assert f"Created {name}" in response.json()["message"] response = client.get(f"/movies/{movie_id}") - assert response.json()["name"] == name + assert response.json()["title"] == name class ApiTestCase(unittest.TestCase): @@ -107,7 +107,6 @@ class ApiTestCase(unittest.TestCase): payload = {k: be_the_fun_in_de_funes[k] for k in domain_keys} # FIXME - payload["name"] = payload["title"] response = client.post("/movies/", json=payload) assert response.status_code == 200 @@ -147,8 +146,6 @@ class ApiTestCase(unittest.TestCase): non_primtive = ["genres", "release_date"] payload = {k: be_the_fun_in_de_funes[k] for k in domain_keys} - # FIXME - payload["name"] = payload["title"] response = client.post("/movies/", json=payload) assert response.status_code == 200 diff --git a/utests/test_sql_database.py b/utests/test_sql_database.py index 019a9a1..7143dc8 100644 --- a/utests/test_sql_database.py +++ b/utests/test_sql_database.py @@ -68,16 +68,16 @@ def rand_name(): def test_create_moviem_models(): name = rand_name() - movie = Movie(name=name) - assert movie.name == name + movie = Movie(title=name) + assert movie.title == name def test_sample_crud(): name = rand_name() with db_context() as db: - movie = crud.create_movie(db, name=name, genres=["Yes", "No"]) - assert movie.name == name + movie = crud.create_movie(db, title=name, genres=["Yes", "No"]) + assert movie.title == name def test_list_movies(): @@ -92,8 +92,8 @@ def test_list_movies(): name = rand_name() names.append(name) - crud.create_movie(db, name=name, genres=["Animated", "Paropaganda"]) + crud.create_movie(db, title=name, genres=["Animated", "Paropaganda"]) movies = client.get("movies") - movies_by_name = {m["name"]: m for m in movies.json()} - assert all(movies_by_name[name] for name in names) + movies_by_title = {m["title"]: m for m in movies.json()} + assert all(movies_by_title[name] for name in names)