"""Test for ows_lyrics model.""" from unittest.mock import MagicMock from flexmock import flexmock from oto import response from owsrequest import request import pytest from product_workflow.constants import services from product_workflow.models import ows_lyrics @pytest.fixture def ows_lyrics_response(get_lyrics_by_track_ids_message): """Return response for multiple tracks from ows-lyrics.""" return response.Response(get_lyrics_by_track_ids_message) def test_get_lyrics_by_track_ids( get_lyrics_by_track_ids_message, ows_lyrics_response): """Test expected call made to ows-lyrics endpoint.""" mock_response = MagicMock(status_code=200) mock_response.json = MagicMock( return_value=get_lyrics_by_track_ids_message) (flexmock(request).should_receive( 'get').with_args( services.OWS_LYRICS, '/tracks/lyrics?tuids=1,2').and_return( mock_response)) track_ids = [1, 2] result = ows_lyrics.get_lyrics_by_track_ids(track_ids) assert result.status == 200 assert result.message == ows_lyrics_response.message def test_get_lyrics_by_track_ids_error(generic_error_payload): """Test error result returned when from ows-lyrics endpoint.""" mock_response = MagicMock(status_code=404) mock_response.json = MagicMock( return_value=generic_error_payload) (flexmock(request).should_receive( 'get').with_args( services.OWS_LYRICS, '/tracks/lyrics?tuids=1,2').and_return( mock_response)) track_ids = [1, 2] result = ows_lyrics.get_lyrics_by_track_ids(track_ids) assert result.status == 404 assert result.errors.get('message') == generic_error_payload.get('message') assert result.errors.get('code') == generic_error_payload.get('code')