"""Pytest conftest module.""" from ddex_ingester_common.schemas.state_machine_schema import ( StateMachineSchema ) import pytest @pytest.fixture def context(): """Context representing DDEX data.""" return { 'status': 'Success', 'context': { 'execution_name': 'execution_name', 'state_machine_name': 'state_machine_name', 'execution_start_time': '2019-03-26T20:14:13.192Z', 'update_indicator': 'OriginalMessage', 'message_id': '12345', 'message_thread_id': '12345-TEST', 'bucket': 'ddex-ingester', 'key': 'sme_ddex/upc/', 'deals': None, 'is_purged_release': False, 'product': { 'status': None, 'display_artist_name': 'Cool Artist', 'vendor_id': None, 'subaccount_id': None, 'upc': '886448369561', 'is_main_release': True, 'product_id': None, 'release_reference': 'R0', 'artwork': { 'filename': 'artwork.tif', 'filepath': 'resources/', 'bucket': None, 'key': None }, 'release_type': 'Album', 'grid': 'A0145345234523453452', 'catalog_number': 'G0134523452345245', 'product_name': 'Test Artist' }, 'tracks': [ { 'release_reference': 'R1', 'resource_reference': 'A1', 'asset': { 'filename': 'audio.flac', 'filepath': 'resources/', 'bucket': None, 'key': None }, 'volume': 1, 'tuid': None, 'sequence_number': 1, 'isrc': 'USSM12001699', 'release_type': 'TrackRelease', 'resource_reference': 'A1', } ], 'video': { 'release_reference': 'T1', 'isrc': 'US234234322', 'tuid': None, 'assets': [ { 'filepath': 'resources/', 'key': '1_Video_001-001.mp4', 'bucket': 'qa-ddex-ingester', 'filename': '1_Video_001-001.mp4', 'aspect_ratio': '1.333' }, { 'filepath': 'resources/', 'key': '2_Video_001-001.mp4', 'bucket': 'qa-ddex-ingester', 'filename': '1_Video_001-001.mp4', 'aspect_ratio': '1.778' } ], }, 'ingest_id': 777, 'ddex_provider': 'SME', 'errors': { 'Error': 'ProjectCodeMismatchException', 'Cause': '{\"errorMessage\": \"GraphQL project code \\\"DUB017\\\" does not match DDEX project code \\\"EXP187642\\\"\", \"errorType\": \"ProjectCodeMismatchException\", \"stackTrace\": [\" File \\\"/var/lang/lib/python3.8/site-packages/sentry_sdk/integrations/aws_lambda.py\\\", line 161, in sentry_handler\\n reraise(*exc_info)\\n\", \" File \\\"/var/lang/lib/python3.8/site-packages/sentry_sdk/_compat.py\\\", line 54, in reraise\\n raise value\\n\", \" File \\\"/var/lang/lib/python3.8/site-packages/sentry_sdk/integrations/aws_lambda.py\\\", line 152, in sentry_handler\\n return handler(aws_event, aws_context, *args, **kwargs)\\n\", \" File \\\"/var/task/index.py\\\", line 52, in handler\\n check_project_code_mismatch(\\n\", \" File \\\"/var/task/index.py\\\", line 95, in check_project_code_mismatch\\n raise ProjectCodeMismatchException(message)\\n\"]}' # noqa }, } } @pytest.fixture def purged_release_context(): """Context representing purged DDEX data.""" return { 'status': 'Success', 'context': { 'product': { 'upc': '886448239871', 'display_upc': '', 'grid': 'A10301A0004208659E', 'catalog_number': 'G010004208659E', 'product_name': 'Wunder', }, 'tracks': [], 'is_purged_release': True, 'bucket': 'qa-ddex-ingester', 'key': 'sme_analytics_ddex/A10301A0004208659E_20250517103349738/', 'message_id': '356866633', 'message_thread_id': 'G010004208659E_INS', 'execution_name': 'test_purged_release_4', 'state_machine_name': 'qa-sme-analytics-ddex-ingester-sfn', 'execution_start_time': '2026-02-17T12:21:16.826Z', 'ddex_provider': 'SME_ANALYTICS_PROVIDER', 'ingest_id': 9997, 'correlation_id': 'cfd5bf98-ad0d-453a-815e-623de1f8e4db', 'validate_product_retry_counter': 0, 'has_switchboard_deal': False, 'artwork_ingestion_only': False } } @pytest.fixture def deserialized_context(context): """Deserialized context object fixture.""" return StateMachineSchema().load(context['context']) @pytest.fixture def deserialized_purged_context(purged_release_context): """Deserialized context object fixture.""" return StateMachineSchema().load(purged_release_context['context'])