"""Test asset helpers.""" from unittest.mock import MagicMock, patch from ddex_ingester_common.helpers.s3_ddex import ( get_s3_track, load_ddex_json ) from ddex_ingester_common.schemas.s3_schema import S3Schema from ddex_ingester_common.schemas.state_machine_schema import TrackSchema import pytest @patch('ddex_ingester_common.helpers.s3_ddex.json.loads') @patch('ddex_ingester_common.helpers.s3_ddex.boto3.client') def test_load_ddex_json(mock_boto3_client, mock_json_loads): """Test load_ddex_json handles function inputs correctly.""" bucket = 's3bucket' key = 's3key/jsonpath/' json_path = f'{key}parsed_ddex.json' mock_event = { 'bucket': bucket, 'key': key } mock_boto3_client_return = MagicMock() mock_boto3_client.return_value = mock_boto3_client_return mock_boto3_client_get_object = MagicMock() mock_boto3_client_return.get_object = mock_boto3_client_get_object load_ddex_json(mock_event) mock_boto3_client_get_object.assert_called_once_with( Bucket=bucket, Key=json_path ) def test_get_s3_track(context): """Test get_s3_tracks retrieves the correct tracks.""" context_track = TrackSchema().load({ 'release_reference': 'R1', 'tuid': None, 'isrc': 'USSM12001699', 'resource_reference': 'A1' }) parsed_ddex = S3Schema().load(context) output = get_s3_track(parsed_ddex, context_track) assert output.track_name == 'New Track' assert output.sequence_number == 1 assert output.volume == 1 def test_get_s3_track_not_found(context): """Test get_s3_tracks raises an Exception.""" context_track = TrackSchema().load({ 'release_reference': 'R1', 'tuid': None, 'isrc': 'USSM12001698', 'resource_reference': 'A1' }) parsed_ddex = S3Schema().load(context) with pytest.raises(Exception): get_s3_track(parsed_ddex, context_track)