"""Unit tests for megaphone show importer.""" from unittest.mock import patch from scripts import megaphone_show_importer from podcast.models import episode as episode_model episode_description_filter_string = """
Learn more about your ad choices. Visit podcastchoices.com/adchoices
""" mock_megaphone_episode = { 'title': 'Megapone importer episode', 'summary': f'description{episode_description_filter_string}', 'seasonNumber': 1, 'episodeNumber': 1, 'episodeType': 'full', 'explicit': True, 'expectedAdhash': '001112', 'createdAt': '2019-03-01T00:00:00', 'updatedAt': '2019-03-01T00:00:00', 'is_deleted': False, 'id': '5f37e6a6_632b_4d74_8e8d_04f9b1ecaaaa', 'draft': False, 'published_date': '2019-03-01T00:00:00', 'uid': 'EPISODE123', 'pubdate': '2019-03-01T00:00:00', 'guid': 'mockguid' } mock_megaphone_podcast = { 'title': 'a podcast!', 'summary': 'summary', 'slug': 'slugabc123', 'author': 'author', 'ownerName': 'some owner', 'link': 'http://theorchard.com', 'ownerEmail': 'some@theorchard.com', 'explicit': False, 'podcastType': 'serial', 'createdAt': '2019-03-01T00:00:00', 'updatedAt': '2019-03-01T00:00:00', 'language': 'en', 'id': '5f37e6a6_632b_4d74_8e8d_04f9b1ecaaaa', 'itunesCategories': ['Active Category'], 'imageFile': '12345.jpg', 'uid': 'uid', 'copyright': '' } url = 'https://playlist.megaphone.fm?p=uid' mock_link = ''.format(url) @patch('scripts.megaphone_show_importer.create_show_family') @patch('podcast.models.podcast_links.create_podcast_link') @patch('scripts.megaphone_show_importer.create_asset') def test_create_orchard_podcast( mock_create_asset, mock_create_podcast_link, mock_create_show_family, mock_current_admin_user): """Test create orchard podcast.""" mock_create_show_family.return_value = {'id': 1, 'title': 'a podcast!', 'network_id': 1} response = megaphone_show_importer.create_orchard_podcast( mock_megaphone_podcast, 1, 'url', 'prod') mock_create_asset.assert_called_once_with( '12345.jpg', response['id'], 'podcast', 'jpg', 'url') mock_create_show_family.assert_called_once_with( {'title': 'a podcast!', 'network_id': 1, 'created_by': '88', 'updated_by': '88'}) mock_create_podcast_link.assert_called_once_with( {'podcast_id': response['id'], 'store_id': 12, 'link': mock_link}) assert response['title'] == 'a podcast!' @patch('scripts.megaphone_show_importer.create_show_family') @patch('podcast.models.podcast_links.create_podcast_link') @patch('scripts.megaphone_show_importer.create_asset') def test_create_orchard_podcast_qa( mock_create_asset, mock_create_podcast_link, mock_create_show_family, mock_current_admin_user): """Test create orchard podcast qa.""" mock_create_show_family.return_value = {'id': 1, 'title': '[PROD] a podcast!', 'network_id': 1} response = megaphone_show_importer.create_orchard_podcast( mock_megaphone_podcast, 1, 'url', 'qa') mock_create_asset.assert_called_once_with( '12345.jpg', response['id'], 'podcast', 'jpg', 'url') mock_create_show_family.assert_called_once_with( {'title': '[PROD] a podcast!', 'network_id': 1, 'created_by': '1298', 'updated_by': '1298'}) mock_create_podcast_link.assert_called_once_with( {'podcast_id': response['id'], 'store_id': 12, 'link': mock_link}) assert response['title'] == '[PROD] a podcast!' @patch('scripts.megaphone_show_importer._update_episode_assets') def test_create_orchard_episode_with_assets(mock_update_episode_assets, mock_current_admin_user): """Test create orchard episode.""" mock_orch_podcast = {'id': 1} mock_megaphone_episode['season_id'] = 1 response = megaphone_show_importer.create_orchard_episode( mock_orch_podcast, mock_megaphone_episode, 'url', True, episode_description_filter_string) mock_update_episode_assets.assert_called_once_with( mock_megaphone_episode, response['id'], 'url') assert response['title'] == 'Megapone importer episode' assert response['description'] == 'description' assert response['planned_pre_roll_count'] == 2 assert response['planned_mid_roll_count'] == 3 assert response['planned_post_roll_count'] == 1 @patch('scripts.megaphone_show_importer._update_episode_assets') def test_create_orchard_episode_no_assets(mock_update_episode_assets, mock_current_admin_user): """Test create orchard episode no assets.""" mock_orch_podcast = {'id': 1} mock_megaphone_episode['summary'] = 'description 1' response = megaphone_show_importer.create_orchard_episode( mock_orch_podcast, mock_megaphone_episode, 'url', False, '') mock_update_episode_assets.assert_not_called() assert response['title'] == 'Megapone importer episode' assert response['description'] == 'description 1' assert response['planned_pre_roll_count'] == 2 assert response['planned_mid_roll_count'] == 3 assert response['planned_post_roll_count'] == 1 @patch('scripts.megaphone_show_importer._update_episode_assets') def test_update_orchard_episode(mock_update_episode_assets, mock_current_admin_user): """Test update orchard episode.""" mock_orch_episode = {'id': 1} old_episode = episode_model.get_episode_by_id(mock_orch_episode['id']) assert old_episode['title'] == 'title' response = megaphone_show_importer.update_orchard_episode( mock_megaphone_episode, mock_orch_episode, 'url', True, episode_description_filter_string) mock_update_episode_assets.assert_called_once_with( mock_megaphone_episode, response['id'], 'url') assert response['title'] == 'Megapone importer episode' assert response['description'] == 'description 1' @patch('scripts.megaphone_show_importer._update_episode_assets') def test_update_orchard_episode_no_assets(mock_update_episode_assets, mock_current_admin_user): """Test create orchard episode no assets.""" mock_orch_episode = {'id': 1} mock_megaphone_episode['summary'] = 'description 2' old_episode = episode_model.get_episode_by_id(mock_orch_episode['id']) assert old_episode['title'] == 'title' response = megaphone_show_importer.update_orchard_episode( mock_megaphone_episode, mock_orch_episode, 'url', False, episode_description_filter_string) mock_update_episode_assets.assert_not_called() assert response['title'] == 'Megapone importer episode' assert response['description'] == 'description 2' def test_get_or_create_orch_seasons(): """Test get or create orchard seasons.""" response = megaphone_show_importer.get_or_create_orch_seasons(1, 1) assert response == [{ 'id': 1, 'podcast_id': 1, 'number': 1, 'name': 's1', 'external_id': 'pod_1_season_1' }] second_response = megaphone_show_importer.get_or_create_orch_seasons(1, 6) assert second_response == [ { 'id': 1, 'podcast_id': 1, 'name': 's1', 'number': 1, 'external_id': 'pod_1_season_1' }, { 'id': 2, 'podcast_id': 1, 'name': 's2', 'number': 2, 'external_id': 'pod_1_season_2' }, { 'id': 3, 'podcast_id': 1, 'name': 's3', 'number': 3, 'external_id': 'pod_1_season_3' }, { 'id': 6, 'podcast_id': 1, 'number': 4, 'name': 'Season 4', 'external_id': None }, { 'id': 7, 'podcast_id': 1, 'number': 5, 'name': 'Season 5', 'external_id': None }, { 'id': 8, 'podcast_id': 1, 'number': 6, 'name': 'Season 6', 'external_id': None } ]