From e565b445ff63b1b8f3c3710272d1831271d37e19 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sat, 26 Aug 2023 17:52:39 +0200 Subject: [PATCH] green: actually delete movies --- crud.py | 6 ++++++ dev.py | 8 ++++++++ utests/test_api.py | 4 +++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/crud.py b/crud.py index 60e8f4b..8d65073 100644 --- a/crud.py +++ b/crud.py @@ -49,3 +49,9 @@ def get_movie_by_id(db: Session, id_: str = ""): except sqlalchemy.exc.NoResultFound: raise LookupError return db_movie + + +def delete_movie_by_id(db: Session, id_: str = ""): + movie = get_movie_by_id(db, id_) + db.delete(movie) + db.commit() diff --git a/dev.py b/dev.py index 4ae14fa..d77de24 100644 --- a/dev.py +++ b/dev.py @@ -84,6 +84,14 @@ async def get_movie(id_: str, db: Session = Depends(get_db)): return out +@app.delete("/movies/{id_}", status_code=status.HTTP_204_NO_CONTENT) +async def delete_movie(id_: str, db: Session = Depends(get_db)): + try: + movie = crud.delete_movie_by_id(db, id_) + except LookupError: + raise HTTPException(status_code=404, detail=f"No movie found with id {id_}") + + @app.get("/movies/") async def list_movie(db: Session = Depends(get_db)): movies = crud.get_all_movies(db) diff --git a/utests/test_api.py b/utests/test_api.py index 14780cb..ee6a6e3 100644 --- a/utests/test_api.py +++ b/utests/test_api.py @@ -51,9 +51,11 @@ def rand_name(): class BaseCrud(unittest.TestCase): - def test_get_movie_404_if_not_found(self): + def test_get_delete_movie_404_if_not_found(self): response = client.get("/movies/-1") assert response.status_code == 404 + response_delete = client.delete("/movies/-1") + assert response_delete.status_code == 404 def test_create_movie_api(self): name = f"rand_{random.randint(1, 1000)}"