RED: For now we only test primitive type to move soon to pydantic
This commit is contained in:
parent
b309418af4
commit
504008b75b
4
crud.py
4
crud.py
|
@ -5,8 +5,8 @@ import models
|
|||
# import schemas
|
||||
|
||||
|
||||
def create_movie(db: Session, name: str = ""):
|
||||
db_movie = models.Movie(name=name)
|
||||
def create_movie(db: Session, name: str, genres: list[str], description: str = ""):
|
||||
db_movie = models.Movie(name=name, genres=str(genres), description=description)
|
||||
db.add(db_movie)
|
||||
db.commit()
|
||||
db.refresh(db_movie)
|
||||
|
|
11
dev.py
11
dev.py
|
@ -35,12 +35,9 @@ async def create_movie(
|
|||
except:
|
||||
data = {}
|
||||
name = name or data["name"]
|
||||
movie = models.Movie()
|
||||
movie.name = name
|
||||
db.add(movie)
|
||||
db.flush()
|
||||
db.commit()
|
||||
db.refresh(movie)
|
||||
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}
|
||||
return out
|
||||
|
||||
|
@ -57,7 +54,7 @@ async def get_movie(id_: str, db: Session = Depends(get_db)):
|
|||
|
||||
|
||||
@app.get("/movies/")
|
||||
async def create_movie(db: Session = Depends(get_db)):
|
||||
async def list_movie(db: Session = Depends(get_db)):
|
||||
movies = crud.get_all_movies(db)
|
||||
|
||||
out = [
|
||||
|
|
|
@ -100,7 +100,11 @@ class ApiTestCase(unittest.TestCase):
|
|||
"vote_count": 1123,
|
||||
}
|
||||
|
||||
domain_keys = {k for k in be_the_fun_in_de_funes if k not in ["id"]}
|
||||
domain_keys = sorted(
|
||||
{k for k in be_the_fun_in_de_funes if k not in ["id"]}
|
||||
) # Make it deterministic
|
||||
non_primtive = ["genres", "release_date"]
|
||||
|
||||
payload = {k: be_the_fun_in_de_funes[k] for k in domain_keys}
|
||||
# FIXME
|
||||
payload["name"] = payload["title"]
|
||||
|
@ -116,7 +120,46 @@ class ApiTestCase(unittest.TestCase):
|
|||
for attribute_name in domain_keys:
|
||||
with self.subTest(attribute_name=attribute_name):
|
||||
assert attribute_name in loopback_payload
|
||||
assert (
|
||||
loopback_payload[attribute_name]
|
||||
== be_the_fun_in_de_funes[attribute_name]
|
||||
)
|
||||
if attribute_name not in non_primtive:
|
||||
assert (
|
||||
loopback_payload[attribute_name]
|
||||
== be_the_fun_in_de_funes[attribute_name]
|
||||
)
|
||||
|
||||
@unittest.expectedFailure
|
||||
def test_payload_content_in_and_out_loopback_non_primitive(self):
|
||||
be_the_fun_in_de_funes = {
|
||||
"id": 1,
|
||||
"title": "La Grande Vadrouille",
|
||||
"description": "During World War II, two French civilians and a downed English Bomber Crew set "
|
||||
"out from Paris to cross the demarcation line between Nazi-occupied Northern France and the "
|
||||
"South. From there they will be able to escape to England. First, they must avoid German troops -"
|
||||
"and the consequences of their own blunders.",
|
||||
"genres": ["Comedy", "War"],
|
||||
"release_date": "1966-12-07",
|
||||
"vote_average": 7.7,
|
||||
"vote_count": 1123,
|
||||
}
|
||||
|
||||
domain_keys = sorted(
|
||||
{k for k in be_the_fun_in_de_funes if k not in ["id"]}
|
||||
) # Make it deterministic
|
||||
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
|
||||
movie_id = response.json()["id"]
|
||||
|
||||
loopback_fetch = client.get(f"/movies/{movie_id}")
|
||||
assert loopback_fetch.status_code == 200
|
||||
loopback_payload = loopback_fetch.json()
|
||||
# check for keys
|
||||
for attribute_name in domain_keys:
|
||||
assert (
|
||||
loopback_payload[attribute_name]
|
||||
== be_the_fun_in_de_funes[attribute_name]
|
||||
)
|
||||
|
|
|
@ -76,7 +76,7 @@ def test_sample_crud():
|
|||
name = rand_name()
|
||||
|
||||
with db_context() as db:
|
||||
movie = crud.create_movie(db, name=name)
|
||||
movie = crud.create_movie(db, name=name, genres=["Yes", "No"])
|
||||
assert movie.name == name
|
||||
|
||||
|
||||
|
@ -92,7 +92,7 @@ def test_list_movies():
|
|||
name = rand_name()
|
||||
|
||||
names.append(name)
|
||||
crud.create_movie(db, name=name)
|
||||
crud.create_movie(db, name=name, genres=["Animated", "Paropaganda"])
|
||||
|
||||
movies = client.get("movies")
|
||||
movies_by_name = {m["name"]: m for m in movies.json()}
|
||||
|
|
Loading…
Reference in New Issue