import uuid from typing import Any from unittest.mock import MagicMock import pytest from common.schemas.ingestion import ProductInfo from common.test_data.event import event_data from pytest_mock import MockerFixture @pytest.fixture def correlation_id() -> str: return str(uuid.uuid4()) @pytest.fixture def bulk_session_ingestion_id() -> str: return str(uuid.uuid4()) @pytest.fixture def product_info() -> ProductInfo: return ProductInfo(**event_data["product_info"]) @pytest.fixture def execution_arn() -> str: return ( "arn:aws:states:us-east-1:123456789012:execution:my-state-machine:my-execution" ) @pytest.fixture def mock_graphql_init(mocker: MockerFixture) -> MagicMock: return mocker.patch("src.app.graphql.init_graphql_client") @pytest.fixture def mock_update_product_not_for_distribution(mocker: MockerFixture) -> MagicMock: return mocker.patch("src.app.graphql.update_product_not_for_distribution") @pytest.fixture def mock_upsert_bulk_session_ingestion_product(mocker: MockerFixture) -> MagicMock: return mocker.patch("src.app.graphql.upsert_bulk_session_ingestion_product") @pytest.fixture def mock_get_product_by_product_code(mocker: MockerFixture) -> MagicMock: return mocker.patch("src.app.graphql.get_product_by_product_code") @pytest.fixture def legacy_event(product_info: dict[str, Any]) -> dict[str, Any]: """Legacy event fixture.""" return { "bulk_session_id": "test-bulk-session-id", "bulk_session_ingestion_id": "test-ingestion-id", "correlation_id": "test-correlation-id", "identity_uuid": "test-identity-uuid", "execution_arn": "arn:aws:states:us-east-1:123456789012:execution:test", "product_info": product_info, "assets_required": True, "submit_products": True, "send_notifications": True, "ingestion_status": "in_progress", }