"""Tests for direct_delivery client / dms_encoding_profiles.""" 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.direct_delivery import get_dms_encoding_profiles from delivery_metadata.constants import ( ProductTypeId, StoreIds, ) @pytest_asyncio.fixture async def create_dms_encoding_profile_tables(test_client: TestClient) -> None: async with app.state.direct_delivery_connector.db_session( transaction=True, turn_off_foreign_key_checks=True ) as session: await session.execute(text("TRUNCATE TABLE encoding_profile")) await session.execute(text("TRUNCATE TABLE dms_encoding_profile")) await session.execute( text( """ INSERT INTO encoding_profile (encoding_profile_id, profile_type, format) VALUES (4, 'image', 'tif'), (18, 'audio', 'mp3_standard'), (80, 'audio', 'flac'), (324, 'audio', 'flac16'), (377, 'metadata', 'Ddex XML'), (328, 'video', 'mov'), (258, 'video_image', 'jpg'), (400, 'audio', 'atmos'); """ ) ) await session.execute( text( """ INSERT INTO dms_encoding_profile ( dms_master_master_id, encoding_profile_id, filename, delivery_location, hashcode, channel, product_type_id, extension, clip_length, order_type, width, height, bitrate, frequency ) VALUES ( 286, 324, '{display_upc}_{cd}_{track_id}.flac', '{display_upc}/resources', '[MD5]{display_upc}_{cd}_{track_id}.flac', 'stereo', 1, 'flac', null, 'release', null, null, null, 44100 ), ( 286, 4, '{display_upc}.tif', '{display_upc}/resources', '[MD5]{display_upc}.tif', null, 1, 'tif', null, 'release', 3000, 3000, null, null ), ( 286, 377, '{display_upc}.xml', '{display_upc}', '', null, 1, 'xml', null, 'release', null, null, null, null ), ( 286, 18, '{display_upc}_{cd}_{track_id}.mp3', '{display_upc}/resources', '[MD5]{display_upc}_{cd}_{track_id}.mp3', 'stereo', 1, 'mp3', null, 'release', null, null, 192000, 44100 ), ( 286, 18, '{display_upc}_{cd}_{track_id}_clip.mp3', '{display_upc}/resources', '[MD5]{display_upc}_{cd}_{track_id}_clip.mp3', 'stereo', 1, 'mp3', 30, 'release', null, null, 192000, 44100 ), ( 286, 328, '{display_upc}_{cd}_{track_id}.mov', '{display_upc}/resources', '[MD5]{display_upc}_{cd}_{track_id}.mov', null, 1, 'mov', null, 'release', null, null, null, null ), ( 286, 258, '{display_upc}_{isrc}.jpg', '{display_upc}/resources', '[MD5]{display_upc}_{isrc}.jpg', null, 1, 'jpg', null, 'release', 300, 200, null, null ), ( 286, 400, '{display_upc}_{cd}_{track_id}_atmos.wav', '{display_upc}/resources', '[MD5]{display_upc}_{cd}_{track_id}_atmos.wav', 'atmos', 1, 'wav', null, 'release', null, null, null, null ); """ ) ) @pytest.mark.asyncio async def test_get_spotify_dms_encoding_profiles( create_dms_encoding_profile_tables: Coroutine[Any, Any, None], snapshot: SnapshotAssertion, ) -> None: result = await get_dms_encoding_profiles(StoreIds.SPOTIFY, ProductTypeId.MUSIC) assert result == snapshot