"""Functional tests for the get_match_audio_results endpoint.""" import json from unittest.mock import MagicMock import boto3 from flask.testing import FlaskClient from moto import mock_aws from syrupy.assertion import SnapshotAssertion from tests.unit.models import au_operations @mock_aws def test_get_match_audio_results( db_fixture: None, fixture_client: FlaskClient, request_engine: dict[str, MagicMock], mock_raise_for_status: MagicMock, snapshot: SnapshotAssertion, ) -> None: """Test get_match_audio_results endpoint.""" product_id = 1 track_id_1 = 11 track_id_2 = 22 track_id_3 = 33 track_id_4 = 44 asset_upload_id_1 = 111 asset_upload_id_2 = 222 asset_upload_id_3 = 333 asset_upload_id_4 = 444 asset_final_id_1 = 1111 asset_final_id_2 = 2222 asset_final_id_3 = 3333 asset_final_id_4 = 4444 request_url = f"v2/asset/product/{product_id}/match-audio" request_engine["ows-track"].add_spec( "GET", f"/product/{product_id}/tracks/light", response={ "items": [ {"tuid": track_id_1}, {"tuid": track_id_2}, {"tuid": track_id_3}, {"tuid": track_id_4}, ] }, ) au_operations.seed_asset_upload_table( [ { "id": asset_upload_id_1, "api_version": 2, "track_unique_id": track_id_1, "product_id": product_id, "user_id": "oa:123456", "filename": "some_filename", }, { "id": asset_upload_id_2, "api_version": 2, "track_unique_id": track_id_2, "product_id": product_id, "user_id": "oa:123456", "filename": "some_filename", }, { "id": asset_upload_id_3, "api_version": 2, "track_unique_id": track_id_3, "product_id": product_id, "user_id": "oa:123456", "filename": "some_filename", }, { "id": asset_upload_id_4, "api_version": 2, "track_unique_id": track_id_4, "product_id": product_id, "user_id": "oa:123456", "filename": "some_filename", }, ] ) au_operations.seed_asset_final_table( [ { "id": asset_final_id_1, "asset_upload_id": asset_upload_id_1, "asset_type": "FLAC", "bucket": "some_bucket", "filename": "some_filename", }, { "id": asset_final_id_2, "asset_upload_id": asset_upload_id_2, "asset_type": "FLAC", "bucket": "some_bucket", "filename": "some_filename", }, { "id": asset_final_id_3, "asset_upload_id": asset_upload_id_3, "asset_type": "FLAC", "bucket": "some_bucket", "filename": "some_filename", }, { "id": asset_final_id_4, "asset_upload_id": asset_upload_id_4, "asset_type": "FLAC", "bucket": "some_bucket", "filename": "some_filename", }, ] ) dynamodb = boto3.resource("dynamodb") table_name = "test_content_review_match_audio_match" table = dynamodb.create_table( TableName=table_name, KeySchema=[{"AttributeName": "asset_final_id", "KeyType": "HASH"}], AttributeDefinitions=[ {"AttributeName": "asset_final_id", "AttributeType": "N"} ], ProvisionedThroughput={"ReadCapacityUnits": 5, "WriteCapacityUnits": 5}, ) table.put_item( Item={ "asset_final_id": asset_final_id_1, "matches": json.dumps( { "matches": [ {"artist": ["Artist"], "label": "something"}, {"artist": ["Artist"], "label": "ORCHARD - something"}, { "artist": ["Artist"], "rights_claim": [ {"distributor": {"name": "The Orchard Enterprises"}} ], }, {"artist": ["Artist"], "rights_claim": None}, ] } ), } ) table.put_item( Item={ "asset_final_id": asset_final_id_2, "matches": json.dumps({"matches": None}), } ) table.put_item( Item={ "asset_final_id": asset_final_id_3, "matches": json.dumps( { "matches": [ {"artist": ["Artist"], "label": "something else"}, { "artist": ["Artist"], "rights_claim": [ {"distributor": {"name": "The Orchard Enterprises"}} ], }, {"artist": ["Artist"], "label": "another something else"}, {"artist": ["Artist"], "rights_claim": [{"distributor": {}}]}, ] } ), } ) result = fixture_client.get(request_url) assert result.status_code == 200 assert result.json == snapshot