import pytest from fansifter_common.adapters.db.utils import TransformTo, normalize_order_by @pytest.mark.parametrize( "value, transform_to, expected", [ ("column_name", "snakecase", ("column_name", "ASC", "")), ("column_name.asc", "snakecase", ("column_name", "ASC", "")), ("column_name.desc", "snakecase", ("column_name", "DESC", "")), ( "column_name.asc.nulls_first", "snakecase", ("column_name", "ASC", "NULLS FIRST"), ), ( "column_name.desc.nulls_last", "snakecase", ("column_name", "DESC", "NULLS LAST"), ), ("column_name", "camelcase", ("columnName", "ASC", "")), ("column_name.asc", "camelcase", ("columnName", "ASC", "")), ("column_name.desc", "camelcase", ("columnName", "DESC", "")), ( "column_name.asc.nulls_first", "camelcase", ("columnName", "ASC", "NULLS FIRST"), ), ( "column_name.desc.nulls_last", "camelcase", ("columnName", "DESC", "NULLS LAST"), ), ("column_name", str.upper, ("COLUMN_NAME", "ASC", "")), ("column_name.asc", str.upper, ("COLUMN_NAME", "ASC", "")), ("column_name.desc", str.upper, ("COLUMN_NAME", "DESC", "")), ( "column_name.asc.nulls_first", str.upper, ("COLUMN_NAME", "ASC", "NULLS FIRST"), ), ( "column_name.desc.nulls_last", str.upper, ("COLUMN_NAME", "DESC", "NULLS LAST"), ), ], ) def test_normalize_order_by( value: str, transform_to: TransformTo, expected: tuple[str, str, str] ) -> None: assert normalize_order_by(value, transform_to) == expected