"""Unit tests for helpers of Spotify Workflow.""" from unittest.mock import MagicMock, patch import pytest from requests import HTTPError from data_landing_zone.flows.spotify import helpers def test_handle_http_download_error(): """Test handle_http_download_error.""" mock_response = MagicMock() mock_response.status_code = 500 with pytest.raises(HTTPError): helpers.handle_http_download_error( HTTPError(response=mock_response)) mock_response.status_code = 404 res = helpers.handle_http_download_error( HTTPError(response=mock_response)) assert res == {'stop': True} @patch('data_landing_zone.flows.spotify.helpers.garcon_feed_status') def test_is_completed_task(feed_status): """Test is_completed_task.""" feed_status._get_item.return_value = { 'completed_tasks_status': 'foo,bar,baz'} assert helpers.is_completed_task('unit test', 'today', 'foo') assert feed_status._get_item.called_with('unit test', 'today') feed_status._get_item.return_value = { 'completed_tasks_status': 'foo,bar,baz'} assert not helpers.is_completed_task( 'unit test', 'today', 'does not exist') # no recorded item feed_status._get_item.return_value = False assert not helpers.is_completed_task( 'unit test', 'today', 'does not exist') @patch('data_landing_zone.flows.spotify.helpers.garcon_feed_status') def test_mark_completed_task(feed_status): """Test mark_completed_task.""" # append additional task feed_status._get_item.return_value = {'completed_tasks_status': 'foo,bar'} helpers.mark_completed_task('unit test', 'today', 'baz') assert feed_status.set_status.called_with( 'unit test', 'today', 'foo,bar,baz') # first task feed_status._get_item.return_value = {'completed_tasks_status': ''} helpers.mark_completed_task('unit test', 'today', 'first') assert feed_status.set_status.called_with('unit test', 'today', 'first') feed_status._get_item.return_value = False helpers.mark_completed_task('unit test', 'today', 'first') assert feed_status.set_status.called_with('unit test', 'today', 'first')