"""Tests for ows-track model.""" from unittest.mock import MagicMock, patch import pytest from collaborator.constants import error, service_name from collaborator.models.ows import ows_track from collaborator.utils.error import OwsError @pytest.fixture(autouse=True) def clear_cache_after_each(): """Clear cache after each test.""" yield ows_track.get_track.cache_clear() @patch("collaborator.models.ows.ows_track.request") def test_get_track(mock_request): """Test getting a track by tuid.""" tuid = 31696041 track = { "artists": [ { "artist_info_id": 2028189, "name": "Debbie Martlew", "track_artist_id": 88681710, "type": "performer", } ], "duration_minutes": 0, "duration_seconds": 2, "explicit": "N", "isrc": "QM6N22015494", "language": { "apple_compatible": True, "iso_639_1_code": "EN", "iso_code_639_3_code": "", "language": "English", "language_code": "ENG", }, "localizations": [], "meta_language_code": "ENG", "offer_type": "all", "original_rights_holder_country_id": 128, "ownership_rights": "original_owner", "p_info": "2020 DM Records", "preview_start_time": 0, "product_id": 2855008, "recording_country_id": 128, "track_name": "Stargazing", "track_number": 1, "track_type": "music", "tuid": 31696041, "upc": 195081569406, "version": "", "volume_number": 1, "writers": [ { "artist_info_id": 2028189, "name": "Debbie Martlew", "track_writer_id": 60653728, "type": "writer", } ], } mock_response = MagicMock() mock_response.status_code = 200 mock_response.json.return_value = track mock_response.text = "content" mock_request.get.return_value = mock_response result = ows_track.get_track(tuid) assert result == track mock_request.get.assert_called_with(service_name.OWS_TRACK, f"/track/{tuid}") @patch("collaborator.models.ows.ows_track.request") def test_get_track_fail(mock_request): """Test failing to get a track by tuid.""" mock_response = MagicMock() mock_response.status_code = 500 mock_response.json.return_value = dict( code=error.ERROR_CODE_OWS_TRACK, message="Some error" ) mock_request.get.return_value = mock_response with pytest.raises(OwsError) as err: ows_track.get_track(31696041) assert err.value.code == error.ERROR_CODE_OWS_TRACK assert err.value.message == "Some error" assert err.value.status == 500