"""Test Product Manager Mapping Product.""" import pytest from sqlalchemy import func, select from video.connectors import mysql from video.models.sql.classes import product_manager_mapping_product from tests.unit import ar_db_utils @pytest.fixture def release_id() -> int: """Test release_id data.""" return 12 @pytest.fixture def product_manager_id() -> int: """Test product_manager_id data.""" return 45 @ar_db_utils.test_schema def test__get(release_id: int, product_manager_id: int) -> None: """Test _get.""" product_manager = product_manager_mapping_product.ProductManagerMappingProduct( release_id=release_id, product_manager_id=product_manager_id ) ar_db_utils.seed_models([product_manager]) with mysql.ar_db_session() as session: response = product_manager_mapping_product._get(release_id, session) assert response is not None assert response.release_id == release_id assert response.product_manager_id == product_manager_id @ar_db_utils.test_schema def test__get_no_data(release_id: int, product_manager_id: int) -> None: """Test _get when no data in DB.""" with mysql.ar_db_session() as session: response = product_manager_mapping_product._get(release_id, session) assert response is None @ar_db_utils.test_schema def test_get_product_manager(release_id: int, product_manager_id: int) -> None: """Test get_product_manager.""" product_manager = product_manager_mapping_product.ProductManagerMappingProduct( release_id=release_id, product_manager_id=product_manager_id ) ar_db_utils.seed_models([product_manager]) result = product_manager_mapping_product.get_product_manager(release_id) assert result["release_id"] == release_id assert result["product_manager_id"] == product_manager_id @ar_db_utils.test_schema def test_get_product_manager_failure(release_id: int) -> None: """Test get_product_manager when no data exists.""" result = product_manager_mapping_product.get_product_manager(release_id) assert result == {} @ar_db_utils.test_schema def test_upsert(release_id: int, product_manager_id: int) -> None: """Test upsert updates.""" with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: product_manager_mapping_product.upsert( release_id, product_manager_id, session=session ) product_manager_mapping_product.upsert(release_id, 36, session=session) result = product_manager_mapping_product.get_product_manager(release_id) assert result["release_id"] == release_id assert result["product_manager_id"] == 36 with mysql.ar_db_session() as session: count = session.execute( select(func.count()).select_from( product_manager_mapping_product.ProductManagerMappingProduct ) ).scalar() assert count == 1 @ar_db_utils.test_schema def test_upsert_create(release_id: int, product_manager_id: int) -> None: """Test upsert creates.""" with mysql.ar_db_session(turn_off_foreign_key_constraint=True) as session: product_manager_mapping_product.upsert( release_id, product_manager_id, session=session ) result = product_manager_mapping_product.get_product_manager(release_id) assert result["release_id"] == release_id assert result["product_manager_id"] == product_manager_id