"""Integration API tests for lyrics.""" import json def test_update_lyrics(timestamped_lyrics, tuid, api_client): """Tests updating lyrics against /tracks via PUT.""" response_put = api_client.put_lyrics(tuid, timestamped_lyrics) assert response_put.status_code == 200, \ 'Result of PUT was {}, expected 200.'.format(response_put.status_code) response_get = api_client.get_lyrics(tuid) assert response_get.status_code == 200, \ 'Result of GET was {}, expected 200.'.format(response_get.status_code) actual_timestamped_lyrics = json.loads(response_get.content)['lyrics'] assert actual_timestamped_lyrics == timestamped_lyrics, \ 'Expected {} in lyrics of response, got {}'.format( timestamped_lyrics, actual_timestamped_lyrics) def test_delete_lyrics(tuid, api_client, put_lyrics_to_track): """Test deleting lyrics against /tracks via DELETE.""" response_delete = api_client.delete_lyrics(tuid) assert response_delete.status_code == 200, \ 'Result of DELETE was {}, expected 200.'.format( response_delete.status_code) response_get = api_client.get_lyrics(tuid) assert response_get.status_code == 404, \ 'Result of GET was {}, expected 404.'.format(response_get.status_code) def test_multi_delete_lyrics_tracks(put_lyrics_to_tracks, api_client, tuids): """Tests deleting multiple lyrics against /tracks via DELETE.""" response_delete = api_client.delete_lyrics_multiple(tuids) assert response_delete.status_code == 200, \ 'Result of DELETE was {}, expected 200.'.format( response_delete.status_code) response_get_track_1 = api_client.get_lyrics(tuids[0]) assert response_get_track_1.status_code == 404, \ 'Result of GET was {}, expected 404.'.format( response_get_track_1.status_code) response_get_track_2 = api_client.get_lyrics(tuids[1]) assert response_get_track_2.status_code == 404, \ 'Result of GET was {}, expected 404.'.format( response_get_track_2.status_code) def test_copy_lyrics_tracks( put_lyrics_to_track, copy_lyrics_payload, api_client, tuids): """Tests copying lyrics against /tracks via POST.""" timestamped_lyrics = put_lyrics_to_track response_post = api_client.post_lyrics(copy_lyrics_payload) assert response_post.status_code == 200, \ 'Result of POST was {}, expected 200.'.format( response_post.status_code) response_get_track_1 = api_client.get_lyrics(tuids[0]) assert response_get_track_1.status_code == 200, \ 'Result of GET was {}, expected 200.'.format( response_get_track_1.status_code) actual_timestamped_lyrics_track_1 = json.loads( response_get_track_1.content)['lyrics'] assert actual_timestamped_lyrics_track_1 == timestamped_lyrics, \ 'Expected {} in lyrics of response, got {}'.format( timestamped_lyrics, actual_timestamped_lyrics_track_1) response_get_track_2 = api_client.get_lyrics(tuids[1]) assert response_get_track_2.status_code == 200, \ 'Result of GET was {}, expected 200.'.format( response_get_track_2.status_code) actual_timestamped_lyrics_track_2 = json.loads( response_get_track_2.content)['lyrics'] assert actual_timestamped_lyrics_track_2 == timestamped_lyrics, \ 'Expected {} in lyrics of response, got {}'.format( timestamped_lyrics, actual_timestamped_lyrics_track_2) def test_get_lyrics_multiple(api_client, tuids): """Tests fetching lyrics for multiple tracks against tuids.""" response_get = api_client.get_lyrics_multiple(tuids) assert response_get.status_code == 200, \ 'Result of GET multiple was {}, expected 200.'.format( response_get.status_code) def test_has_explicit_lyrics(api_client): """Tests checking explicit word in lyrics.""" response_get = api_client.has_explicit_lyrics('fuck') assert response_get.status_code == 200, \ 'Result of GET has explicit lyrics was {}, expected 200.'.format( response_get.status_code)