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.track_artist_localized_metadata import ( get_track_artist_localized_metadata, ) @pytest_asyncio.fixture async def create_track_artist_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_artist_localized_metadata")) await session.execute( text( """ INSERT INTO track_artist_localized_metadata ( id, track_artist_id, language_id, artist_name ) VALUES ( :id, :track_artist_id, :language_id, :artist_name ) """ ), [ { "id": 1, "track_artist_id": 111, "language_id": 7, "artist_name": "情牵一世人", }, { "id": 2, "track_artist_id": 222, "language_id": 7, "artist_name": "心的靠岸", }, { "id": 3, "track_artist_id": 333, "language_id": 7, "artist_name": "方顺吉", }, ], ) @pytest.mark.asyncio async def test_get_track_artist_localized_metadata( create_track_artist_localized_metadata_table: Coroutine[Any, Any, None], create_track_artist_tables: 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_artist_localized_metadata(456) assert result == snapshot @pytest.mark.asyncio async def test_get_product_artist_localized_metadata_with_no_data( create_track_artist_localized_metadata_table: Coroutine[Any, Any, None], create_track_artist_tables: Coroutine[Any, Any, None], create_track_table: Coroutine[Any, Any, None], create_itunes_languages_tables: Coroutine[Any, Any, None], ) -> None: result = await get_track_artist_localized_metadata(999) assert result == frozenset()