"""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_ows_lyrics_message): """Return a dictionary of release approval queue properties for testing.""" return response.Response(get_ows_lyrics_message) def test_apply_track_lyrics( lyrics_correction_details, get_ows_lyrics_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_ows_lyrics_message) data = {'lyrics': lyrics_correction_details['key_value']} (flexmock(request).should_receive( 'put').with_args( services.OWS_LYRICS, '/tracks/{}/lyrics'.format(lyrics_correction_details['key_id']), json=data).and_return( mock_response)) result = ows_lyrics.apply_track_lyrics(lyrics_correction_details) assert result.status == 200 assert result.message == ows_lyrics_response.message def test_apply_track_lyrics_when_error_received( lyrics_correction_details, 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) data = {'lyrics': lyrics_correction_details['key_value']} (flexmock(request).should_receive( 'put').with_args( services.OWS_LYRICS, '/tracks/{}/lyrics'.format(lyrics_correction_details['key_id']), json=data).and_return( mock_response)) result = ows_lyrics.apply_track_lyrics(lyrics_correction_details) assert result.status == 404 assert result.errors.get('message') == generic_error_payload.get('message') assert result.errors.get('code') == generic_error_payload.get('code')