From 8c9a4d5295dc9ebc32d9fe42bbb3078a98ad44b2 Mon Sep 17 00:00:00 2001 From: Colin Goutte Date: Sun, 27 Aug 2023 13:28:46 +0200 Subject: [PATCH] Fix type casting, now we have an unexpected succes :) --- crud.py | 2 +- models.py | 5 ++++- utests/test_sql_database.py | 6 +++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/crud.py b/crud.py index b2daf35..69e6e05 100644 --- a/crud.py +++ b/crud.py @@ -17,7 +17,7 @@ def create_movie( ): db_movie = models.Movie( title=title, - genres=str(genres), + genres=genres, description=description, vote_average=vote_average, vote_count=vote_count, diff --git a/models.py b/models.py index ace492e..26a655e 100644 --- a/models.py +++ b/models.py @@ -7,7 +7,10 @@ class NaiveStringList(types.TypeDecorator): impl = types.Unicode sep = "\n" - def process_bind_param(self, value, dialect): + def process_bind_param(self, value: list[str], dialect): + allowed = list, tuple + if not isinstance(value, allowed): + raise ValueError(f"{value!r}'s type should be in types{allowed} ") return self.sep.join(value) def process_result_value(self, value, dialect): diff --git a/utests/test_sql_database.py b/utests/test_sql_database.py index d486751..0e3e3b7 100644 --- a/utests/test_sql_database.py +++ b/utests/test_sql_database.py @@ -3,7 +3,7 @@ from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.pool import StaticPool from sqlalchemy import MetaData - +from sqlalchemy import exc from database import Base from dev import app, get_db from models import Movie @@ -97,8 +97,8 @@ def test_genre_custom_type_serialize_type(): try: with db_context() as db: movie = crud.create_movie(db, title=name, genres=csv_genres) - except TypeError as exc: - assert "tuple" in str(exc) + except (ValueError, exc.StatementError) as error: + assert "tuple" in str(error) else: raise RuntimeError("Exception should have been raised")