Green: we can get simple attributes back and forth
This commit is contained in:
parent
504008b75b
commit
a030fb0b4f
18
crud.py
18
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)
|
||||
|
|
15
dev.py
15
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
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue