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_product_localized_metadata @pytest_asyncio.fixture async def create_product_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 release_localized_metadata")) await session.execute( text( """ INSERT INTO release_localized_metadata ( id, release_id, language_id, release_name, delivered_version ) VALUES ( :id, :release_id, :language_id, :release_name, :delivered_version ) """ ), [ { "id": 1, "release_id": 123, "language_id": 6, "release_name": "纯情花蕊", "delivered_version": "纯情花蕊12", }, ], ) @pytest.mark.asyncio async def test_get_product_localized_metadata( create_product_localized_metadata_table: Coroutine[Any, Any, None], create_itunes_languages_tables: Coroutine[Any, Any, None], snapshot: SnapshotAssertion, ) -> None: result = await get_product_localized_metadata(123) assert result == snapshot @pytest.mark.asyncio async def test_get_product_localized_metadata_without_localization( create_product_localized_metadata_table: Coroutine[Any, Any, None], create_itunes_languages_tables: Coroutine[Any, Any, None], ) -> None: result = await get_product_localized_metadata(987) assert result == []