migrate db.find_movies to SQLAlchemy

This commit is contained in:
ducklet 2023-03-28 21:49:02 +02:00
parent 1fd7e730b3
commit 84bbe331ee
2 changed files with 118 additions and 38 deletions

View file

@ -316,3 +316,86 @@ async def test_ratings_for_movies(shared_conn: db.Database):
assert (r1,) == tuple(
await db.ratings_for_movies(movie_ids=movie_ids, user_ids=user_ids)
)
@pytest.mark.asyncio
async def test_find_movies(shared_conn: db.Database):
async with shared_conn.transaction(force_rollback=True):
m1 = a_movie(title="movie one")
await db.add(m1)
m2 = a_movie(title="movie two", imdb_score=33, release_year=m1.release_year + 1)
await db.add(m2)
u1 = models.User(
imdb_id="u00001",
name="User1",
secret="secret1",
)
await db.add(u1)
u2 = models.User(
imdb_id="u00002",
name="User2",
secret="secret2",
)
await db.add(u2)
r1 = models.Rating(
movie_id=m2.id,
movie=m2,
user_id=u1.id,
user=u1,
score=66,
rating_date=datetime.now(),
)
await db.add(r1)
# ---
assert () == tuple(await db.find_movies(title=m1.title, include_unrated=False))
assert ((m1, []),) == tuple(
await db.find_movies(title=m1.title, include_unrated=True)
)
assert ((m1, []),) == tuple(
await db.find_movies(title="mo on", exact=False, include_unrated=True)
)
assert ((m1, []),) == tuple(
await db.find_movies(title="movie one", exact=True, include_unrated=True)
)
assert () == tuple(
await db.find_movies(title="mo on", exact=True, include_unrated=True)
)
assert ((m2, []),) == tuple(
await db.find_movies(title="movie", exact=False, include_unrated=False)
)
assert ((m2, []), (m1, [])) == tuple(
await db.find_movies(title="movie", exact=False, include_unrated=True)
)
assert ((m1, []),) == tuple(
await db.find_movies(include_unrated=True, yearcomp=("=", m1.release_year))
)
assert ((m2, []),) == tuple(
await db.find_movies(include_unrated=True, yearcomp=("=", m2.release_year))
)
assert ((m1, []),) == tuple(
await db.find_movies(include_unrated=True, yearcomp=("<", m2.release_year))
)
assert ((m2, []),) == tuple(
await db.find_movies(include_unrated=True, yearcomp=(">", m1.release_year))
)
assert ((m2, []), (m1, [])) == tuple(await db.find_movies(include_unrated=True))
assert ((m2, []),) == tuple(
await db.find_movies(include_unrated=True, limit_rows=1)
)
assert ((m1, []),) == tuple(
await db.find_movies(include_unrated=True, skip_rows=1)
)
assert ((m2, [r1]), (m1, [])) == tuple(
await db.find_movies(include_unrated=True, user_ids=[u1.id, u2.id])
)