"""Unit tests for analytics model.""" from unittest.mock import patch from podcast.models import ows_analytics @patch('owsrequest.request.post') def test_get_top_episodes(mock, mock_ows_headers): """Test will get top episodes.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.top_episodes( [1, 2], 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2'], 9, 0, 'downloads', 'desc') assert mock.mock_calls[0][2]['json'] == { 'podcast_ids': [1, 2], 'limit': 9, 'offset': 0, 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'sort_field': 'downloads', 'sort_order': 'desc', 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.get') def test_episode_daily_downloads(mock, mock_ows_headers): """Test will get episode daily downloads.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.episode_daily_downloads( [1, 2], 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2']) assert mock.call_args[1]['params'] == { 'episode_ids': [1, 2], 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.post') def test_get_top_podcasts(mock, mock_ows_headers): """Test will get top podcasts.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.top_podcasts( [1, 2], 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2'], 9, 0, 'downloads', 'desc') assert mock.mock_calls[0][2]['json'] == { 'podcast_ids': [1, 2], 'limit': 9, 'offset': 0, 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'sort_field': 'downloads', 'sort_order': 'desc', 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.get') def test_podcast_daily_downloads(mock, mock_ows_headers): """Test will get podcast daily downloads.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.podcast_daily_downloads( [1, 2], 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2']) assert mock.call_args[1]['params'] == { 'podcast_ids': [1, 2], 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.post') def test_get_top_networks(mock, mock_ows_headers): """Test will get top networks.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.top_networks( [1, 2], 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2'], 9, 0, 'downloads', 'desc') assert mock.mock_calls[0][2]['json'] == { 'network_ids': [1, 2], 'limit': 9, 'offset': 0, 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'sort_field': 'downloads', 'sort_order': 'desc', 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.get') def test_network_daily_downloads(mock, mock_ows_headers): """Test will get network daily downloads.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.network_daily_downloads( [1, 2], 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2']) assert mock.call_args[1]['params'] == { 'network_ids': [1, 2], 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.get') def test_country_daily_downloads(mock, mock_ows_headers): """Test will get network daily downloads.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.country_daily_downloads( 1, 'network', 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2']) assert mock.call_args[1]['params'] == { 'object_id': 1, 'object_type': 'network', 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'start_date': None, 'end_date': None} assert result == return_value @patch('owsrequest.request.get') def test_get_chartable_podcasts_by_ids(mock, mock_ows_headers): """Test will get chartable podcasts by ids.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.get_chartable_podcasts_by_ids([1, 2]) assert mock.call_args[1]['params'] == {'podcast_ids': [1, 2]} assert result == return_value @patch('owsrequest.request.post') def test_get_podcast_chart(mock, mock_ows_headers): """Test will get podcast chart by ids.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.get_podcast_chart( 'spotify', 'category', 'US', '2020-01-01', [1, 2]) assert mock.call_args[1]['json'] == { 'store': 'spotify', 'category': 'category', 'country': 'US', 'report_date': '2020-01-01', 'podcast_ids': [1, 2] } assert result == return_value @patch('owsrequest.request.post') def test_get_episode_chart(mock, mock_ows_headers): """Test will get podcast chart by ids.""" return_value = {'items': []} mock.return_value.json.return_value = return_value result = ows_analytics.get_episode_chart( 'category', 'US', '2020-01-01', [1, 2]) assert mock.call_args[1]['json'] == { 'category': 'category', 'country': 'US', 'report_date': '2020-01-01', 'podcast_ids': [1, 2] } assert result == return_value @patch('owsrequest.request.get') def test_player_daily_downloads(mock, mock_ows_headers, player_daily_downloads_fixture): """Test will get players daily downloads.""" mock.return_value.json.return_value = player_daily_downloads_fixture result = ows_analytics.player_daily_downloads( 1, 'network', 'past_28_days', ['AA', 'BB'], ['Player1', 'Player2']) assert mock.call_args[1]['params'] == { 'object_id': 1, 'object_type': 'network', 'date_range': 'past_28_days', 'countries': ['AA', 'BB'], 'players': ['Player1', 'Player2'], 'start_date': None, 'end_date': None} assert result == player_daily_downloads_fixture