from typing import Any, Coroutine import pytest import pytest_asyncio from fastapi.testclient import TestClient from sqlalchemy.sql import text from syrupy.assertion import SnapshotAssertion from delivery_metadata.api.app import app from delivery_metadata.clients.art_relations import get_track_localized_metadata @pytest_asyncio.fixture async def create_track_localized_metadata_table(test_client: TestClient) -> None: async with app.state.art_relations_connector.db_session( transaction=True, turn_off_foreign_key_checks=True ) as session: await session.execute(text("TRUNCATE TABLE track_localized_metadata")) await session.execute( text( """ INSERT INTO track_localized_metadata ( id, track_id, language_id, track_name, version ) VALUES ( :id, :track_id, :language_id, :track_name, :version ) """ ), [ { "id": 1, "track_id": 12345, "language_id": 7, "track_name": "情牵一世人", "version": "情牵一世人34", }, { "id": 2, "track_id": 12347, "language_id": 7, "track_name": "心的靠岸", "version": "心的靠岸88", }, ], ) @pytest.mark.asyncio async def test_get_track_localized_metadata( create_track_localized_metadata_table: Coroutine[Any, Any, None], create_track_table: Coroutine[Any, Any, None], create_itunes_languages_tables: Coroutine[Any, Any, None], snapshot: SnapshotAssertion, ) -> None: result = await get_track_localized_metadata(456) assert result == snapshot @pytest.mark.asyncio async def test_get_track_localized_metadata_without_localization( create_track_localized_metadata_table: Coroutine[Any, Any, None], create_track_table: Coroutine[Any, Any, None], create_itunes_languages_tables: Coroutine[Any, Any, None], ) -> None: result = await get_track_localized_metadata(987) assert result == []