"""Test for asset_upload_type model.""" from typing import Any import pytest from assets.constants.asset_upload_types import STEREO from assets.exceptions import AssetUploadTypeNotFound from assets.models import asset_upload_type from tests.unit.models import au_operations @pytest.fixture def asset_upload_type_data() -> list[dict[str, Any]]: return [ { "asset_upload_type_id": 1, "name": "stereo", }, { "asset_upload_type_id": 2, "name": "static_artwork", }, { "asset_upload_type_id": 3, "name": "atmos", }, ] @pytest.fixture def invalid_asset_upload_type_name() -> str: return "invalid_type" @pytest.fixture def db_fixture(asset_upload_type_data: list[dict[str, Any]]) -> None: """Set up the asset_upload_type table.""" au_operations.truncate_tables() au_operations.seed_asset_upload_type_table(asset_upload_type_data) def test_get_asset_upload_type_map_success( db_fixture: None, asset_upload_type_data: list[dict[str, Any]] ) -> None: """Test that get_asset_upload_type_map returns full bidirectional mapping.""" asset_upload_type.get_asset_upload_type_map.cache_clear() response = asset_upload_type.get_asset_upload_type_map() expected_id_to_name = { row["asset_upload_type_id"]: row["name"] for row in asset_upload_type_data } expected_name_to_id = { row["name"]: row["asset_upload_type_id"] for row in asset_upload_type_data } assert response.id_to_name == expected_id_to_name assert response.name_to_id == expected_name_to_id def test_resolve_asset_upload_type_id_success(db_fixture: None) -> None: asset_upload_type.get_asset_upload_type_map.cache_clear() response = asset_upload_type.resolve_asset_upload_type_id(STEREO) assert response == 1 def test_resolve_asset_upload_type_id_failure( db_fixture: None, invalid_asset_upload_type_name: str ) -> None: """Test failure to resolve asset_upload_type_id.""" asset_upload_type.get_asset_upload_type_map.cache_clear() with pytest.raises(AssetUploadTypeNotFound) as exc: asset_upload_type.resolve_asset_upload_type_id(invalid_asset_upload_type_name) assert exc.value.description == invalid_asset_upload_type_name def test_resolve_asset_upload_type_success(db_fixture: None) -> None: asset_upload_type.get_asset_upload_type_map.cache_clear() response = asset_upload_type.resolve_asset_upload_type(1) assert response == STEREO def test_resolve_asset_upload_type_failure(db_fixture: None) -> None: """Test failure to resolve asset_upload_type.""" asset_upload_type.get_asset_upload_type_map.cache_clear() with pytest.raises(AssetUploadTypeNotFound) as exc: asset_upload_type.resolve_asset_upload_type(-1234) assert exc.value.description == "-1234"