Migrate to unittests : ":%s/\(def test_.*(\)/\0self/c"

This commit is contained in:
Colin Goutte 2023-08-27 23:03:57 +02:00
parent 6a931228c3
commit 9911d0f973
3 changed files with 136 additions and 136 deletions

View File

@ -3,4 +3,4 @@ Nogo:
Caveats:
Issue in database / session management for tests, out of scope to unserstand no
Issue in database / session management for tests, out of scope to unserstand now

View File

@ -16,7 +16,7 @@ run_dev:
git ls-files | entr -r pipenv run python dev.py
tdd:
git ls-files | entr make test opt='$(opt)'
git ls-files | entr make test opt='$(opt)'
git ls-files | entr make functionnal_tests
refactor_tdd:
@ -29,6 +29,7 @@ watch_db:
test:
pipenv run pytest $(coverage_opt) $(opt) utests
make functional_tests
functionnal_tests:
pipenv run python -m pytest functionnal_test.py

View File

@ -9,6 +9,9 @@ from dev import app, get_db
from models import Movie
import pytest
import unittest
import crud
import contextlib
@ -66,186 +69,182 @@ def rand_name():
return name
def test_create_moviem_models():
name = rand_name()
movie = Movie(title=name)
assert movie.title == name
class CrudModelsTestCase(unittest.TestCase):
def test_create_moviem_models(self):
name = rand_name()
movie = Movie(title=name)
assert movie.title == name
def test_sample_crud(self):
name = rand_name()
def test_sample_crud():
name = rand_name()
with db_context() as db:
movie = crud.create_movie(db, title=name, genres=["Yes", "No"])
assert movie.title == name
def test_genre_custom_type_serialize_value():
name = rand_name()
genres = ["Yes", "No"]
with db_context() as db:
movie = crud.create_movie(db, title=name, genres=genres)
assert movie.genres == genres
def test_genre_custom_type_serialize_type():
name = rand_name()
genres = ["Yes", "No"]
csv_genres = ",".join(genres)
try:
with db_context() as db:
movie = crud.create_movie(db, title=name, genres=csv_genres)
except (ValueError, exc.StatementError) as error:
assert "tuple" in str(error)
else:
raise RuntimeError("Exception should have been raised")
movie = crud.create_movie(db, title=name, genres=["Yes", "No"])
assert movie.title == name
def test_genre_custom_type_serialize_value(self):
name = rand_name()
def test_list_movies():
clear_db()
response = client.get("/movies/")
# assert response.json() == []
genres = ["Yes", "No"]
with db_context() as db:
movie = crud.create_movie(db, title=name, genres=genres)
assert movie.genres == genres
N = 10
names = []
with db_context() as db:
for _ in range(N):
name = rand_name()
def test_genre_custom_type_serialize_type(self):
name = rand_name()
genres = ["Yes", "No"]
csv_genres = ",".join(genres)
names.append(name)
crud.create_movie(db, title=name, genres=["Animated", "Paropaganda"])
try:
with db_context() as db:
movie = crud.create_movie(db, title=name, genres=csv_genres)
except (ValueError, exc.StatementError) as error:
assert "tuple" in str(error)
else:
raise RuntimeError("Exception should have been raised")
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)
def test_list_movies(self):
clear_db()
response = client.get("/movies/")
# assert response.json() == []
N = 10
names = []
with db_context() as db:
for _ in range(N):
name = rand_name()
def test_search_movies_exact():
clear_db()
response = client.get("/movies/")
# assert response.json() == []
names.append(name)
crud.create_movie(db, title=name, genres=["Animated", "Paropaganda"])
radix = rand_name()
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)
title = radix + "test_search_title"
def test_search_movies_exact(self):
clear_db()
response = client.get("/movies/")
# assert response.json() == []
desc = radix + "test_search_desription"
radix = rand_name()
with db_context() as db:
movie_title = crud.create_movie(
db, title=title, genres=["Animated", "Paropaganda"]
)
title = radix + "test_search_title"
movie_desc = crud.create_movie(
db, title=radix, description=desc, genres=["Animated", "Paropaganda"]
)
movie_desc_id = movie_desc.id
desc = radix + "test_search_desription"
found = crud.search_movie(db, title).all()
assert len(found) == 1
with db_context() as db:
movie_title = crud.create_movie(
db, title=title, genres=["Animated", "Paropaganda"]
)
assert found[0] == movie_title
movie_desc = crud.create_movie(
db, title=radix, description=desc, genres=["Animated", "Paropaganda"]
)
movie_desc_id = movie_desc.id
found = crud.search_movie(db, desc).all()
assert len(found) == 1
found = crud.search_movie(db, title).all()
assert len(found) == 1
assert found[0] == movie_desc
assert found[0] == movie_title
found = crud.search_movie(db, desc).all()
assert len(found) == 1
def test_search_movies_token():
clear_db()
response = client.get("/movies/")
# assert response.json() == []
assert found[0] == movie_desc
radix = rand_name()
def test_search_movies_token(self):
clear_db()
response = client.get("/movies/")
# assert response.json() == []
title = radix + "test_search_title titletoken"
radix = rand_name()
desc = radix + "test_search_desription desctoken"
title = radix + "test_search_title titletoken"
with db_context() as db:
movie_title = crud.create_movie(
db, title=title, genres=["Animated", "Paropaganda"]
)
desc = radix + "test_search_desription desctoken"
movie_desc = crud.create_movie(
db, title=radix, description=desc, genres=["Animated", "Paropaganda"]
)
movie_desc_id = movie_desc.id
with db_context() as db:
movie_title = crud.create_movie(
db, title=title, genres=["Animated", "Paropaganda"]
)
found = crud.search_movie(db, "titletoken").all()
assert len(found) == 1
movie_desc = crud.create_movie(
db, title=radix, description=desc, genres=["Animated", "Paropaganda"]
)
movie_desc_id = movie_desc.id
assert found[0] == movie_title
found = crud.search_movie(db, "titletoken").all()
assert len(found) == 1
found = crud.search_movie(db, "desctoken").all()
assert len(found) == 1
assert found[0] == movie_title
assert found[0] == movie_desc
found = crud.search_movie(db, "desctoken").all()
assert len(found) == 1
assert found[0] == movie_desc
def test_search_movies_token_period():
return
clear_db()
response = client.get("/movies/")
# assert response.json() == []
def test_search_movies_token_period(self):
return
clear_db()
response = client.get("/movies/")
# assert response.json() == []
radix = rand_name()
radix = rand_name()
title = radix + "test_search_title title3tokenperiod."
title = radix + "test_search_title title3tokenperiod."
with db_context() as db:
movie_title = crud.create_movie(
db, title=title, genres=["Animated", "Paropaganda"]
)
with db_context() as db:
movie_title = crud.create_movie(
db, title=title, genres=["Animated", "Paropaganda"]
)
found = crud.search_movie(db, "title3tokenpreriod").all()
assert len(found) == 1
assert found[0] == movie_title
found = crud.search_movie(db, "title3tokenpreriod").all()
assert len(found) == 1
assert found[0] == movie_title
def test_sample_import_toy_story(self):
clear_db()
def test_sample_import_toy_story():
clear_db()
movie_title = "Toy Story"
file_path = "input_data/movies_metadata_short.csv"
movie_title = "Toy Story"
file_path = "input_data/movies_metadata_short.csv"
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
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"
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)
with db_context() as db:
fill_db(db, file_path)
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
toy_story = movies_by_title["Toy Story"]
toy_story = movies_by_title["Toy Story"]
assert "Andy" in toy_story["description"]
assert "Andy" in toy_story["description"]
def test_title_is_taken_form_original_title_is_missing(self):
"""
t0113002,en,Midnight Man
19763 Midnight Man (among others) has an unescaped \n that makes import fail
in the csv the movie 'Avalanche Sharks' @ line 35587
has no tiltle, we fix this here to get quicker but we need a better solution
"""
movie_title = "Midnight Man"
def test_title_is_taken_form_original_title_is_missing():
"""
t0113002,en,Midnight Man
19763 Midnight Man (among others) has an unescaped \n that makes import fail
file_path = "utests/movie_error_missing_title.csv"
file_path = "input_data/movies_metadata.csv"
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
in the csv the movie 'Avalanche Sharks' @ line 35587
has no tiltle, we fix this here to get quicker but we need a better solution
"""
movie_title = "Midnight Man"
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)
file_path = "utests/movie_error_missing_title.csv"
file_path = "input_data/movies_metadata.csv"
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").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}
movies = client.get("movies").json()["movies"]
movies_by_title = {m["title"]: m for m in movies}