"""Tests for Track Vendor.""" from oto import response import pytest from backend.logic import track as track_logic from backend.logic import track_vendor as track_vendor_logic from backend.models import ows_sound_recordings from backend.utils import api as api_utils def test_dataload_tracks_isrc_validation( mocker, test_product_ids, test_validate_cross_track_isrc_mismatch_reporting_response, test_isrc_response_validation_response ): """Test dataload_tracks_isrc_validation function.""" mocker.patch.object( track_logic, 'get_all_tracks_by_product_id', return_value=response.Response(message={'items': [{'tuid': 1, 'isrc': 'XYZ123'}]})) mocker.patch.object( track_vendor_logic, 'product_tracks_isrc_validation', return_value=test_validate_cross_track_isrc_mismatch_reporting_response ) mocker.patch.object( track_vendor_logic, 'format_warning', return_value=[{ "product_id": 1, "track_tuid": 1, "track_isrc": "XYZ123", "warning_type": "Cross Track ISRC Mismatch", "match": { "tuid": 2, "isrc": "XYZ456", "product_id": 2, "upc": "123456789", "vendor_id": 12345} }] ) mocker.patch.object( api_utils, 'create_isrc_validation_response', return_value=test_isrc_response_validation_response ) result = track_vendor_logic.dataload_tracks_isrc_validation( product_ids=test_product_ids ) assert result == test_isrc_response_validation_response def test_product_tracks_isrc_validation( mocker, test_product_id, test_track, test_validate_cross_track_isrc_mismatch_reporting_response, test_validate_cross_isrc_osr_mismatch_reporting_response, ): """Test product_tracks_isrc_validation function.""" mocker.patch.object( ows_sound_recordings, 'get_formatted_sound_recording_matches', return_value={} ) mocker.patch.object( track_vendor_logic, 'validate_cross_track_isrc_mismatch_reporting', return_value=test_validate_cross_track_isrc_mismatch_reporting_response ) mocker.patch.object( track_vendor_logic, 'get_cross_isrc_osr_mismatch_warnings_reporting', return_value=test_validate_cross_isrc_osr_mismatch_reporting_response ) validation_response = track_vendor_logic.product_tracks_isrc_validation( [test_product_id], [test_track] ) assert validation_response == ( test_validate_cross_track_isrc_mismatch_reporting_response + test_validate_cross_isrc_osr_mismatch_reporting_response ) @pytest.mark.parametrize( ( 'test_description', 'product_id', 'sound_recording_matches', 'expected_result' ), [ ( 'Matches existing ISRC with different track ISRC', 1, { 1: { "tuid": 1, "isrc": "DUMMYISRC001", "matched_tracks": [ { "tuid": 3333331, "isrc": "MATCHISRC001", "product_id": 4444001, "upc": "UPC000001", "release_status": "in_content", "subaccount_id": 0, "vendor_id": 55555 } ] } }, [ { "product_id": 1, "track_tuid": 1, "track_isrc": "DUMMYISRC001", "warning_type": "Cross Track ISRC Mismatch", "match_tuid": 3333331, "match_isrc": "MATCHISRC001", "match_product_id": 4444001, "match_upc": "UPC000001", "match_vendor_id": 55555 } ] ), ('No cross track isrc mismatch', 2, {}, []), ] ) def test_validate_cross_track_isrc_mismatch( mocker, test_description, product_id, sound_recording_matches, expected_result, ): """Test validate_cross_track_isrc_mismatch function.""" result = track_vendor_logic.validate_cross_track_isrc_mismatch_reporting( product_id, sound_recording_matches ) assert result == expected_result @pytest.mark.parametrize( ( 'test_description', 'product_id', 'isrc_matches', 'tuids_to_isrcs', 'expected_result' ), [ ( 'Matches existing ISRC with different OSR', 1, { 'osrs_to_tracks': { 'osr1': [ { 'tuid': 1, 'isrc': 'ISRC1', 'product_id': 101, 'upc': 'UPC1', 'release_status': 'status', 'subaccount_id': 0, 'vendor_id': 201 }, ], }, 'tuids_to_osr_ids': { 10: 'osr1' } }, { 10: 'ISRC1' }, [ { "product_id": 1, "track_tuid": 10, "track_isrc": "ISRC1", "warning_type": "Potential ISRC Misuse", "match_tuid": 3333331, "match_isrc": "MATCHISRC001", "match_product_id": 4444001, "match_upc": "UPC000001", "match_vendor_id": 55555 } ] ), ( 'No cross ISRC OSR mismatch', 2, { 'osrs_to_tracks': { 'osr1': [], }, 'tuids_to_osr_ids': { 10: None } }, { 10: 'ISRC1' }, [] ), ] ) def test_validate_cross_isrc_osr_mismatch( mocker, test_description, product_id, isrc_matches, tuids_to_isrcs, expected_result, test_get_same_isrc_different_osr_response ): """Test validate_cross_isrc_osr_mismatch_reporting function.""" mocker.patch.object( track_logic, 'get_same_isrc_different_osr', return_value=test_get_same_isrc_different_osr_response ) result = track_vendor_logic.validate_cross_isrc_osr_mismatch_reporting( product_id, isrc_matches, tuids_to_isrcs ) assert result == expected_result