"""Tests for exception handler.""" from unittest.mock import MagicMock from oto import status from podcast.logic import ad_action from podcast.logic import email def test_get_ad_actions_handler(fixture_client, ad_read_fixture, monkeypatch): """Test get ad actions handler.""" monkeypatch.setattr( ad_action, 'get_ad_actions', MagicMock( return_value={'items': [ad_read_fixture]})) result = fixture_client.get('/ad-reads') assert result.status_code == status.OK assert len(result.json['items']) == 1 def test_create_ad_action_handler(fixture_client, ad_read_fixture, monkeypatch): """Test create ad actions handler.""" monkeypatch.setattr( ad_action, 'create_ad_action', MagicMock( return_value=ad_read_fixture)) result = fixture_client.post('/ad-reads', json=ad_read_fixture) assert result.status_code == status.OK ad_action.create_ad_action.assert_called_once_with(ad_read_fixture) def test_delete_ad_action_handler(fixture_client, ad_read_fixture, monkeypatch): """Test delete ad actions handler.""" monkeypatch.setattr( ad_action, 'delete_ad_action', MagicMock(return_value=ad_read_fixture)) result = fixture_client.delete('/ad-reads/1') assert result.status_code == status.OK ad_action.delete_ad_action.assert_called_once_with(1) def test_set_ad_read_virus_free(fixture_client, monkeypatch, ad_read_fixture): """Test set_ad_read_virus_free handler.""" monkeypatch.setattr(email, 'send_ad_action_assigned_to_me', MagicMock()) result = fixture_client.post('/ad-read-virus-free', json={'filename': 'copies/unique-ad_copy-filename.pdf'}) assert result.status_code == status.OK assert result.json['title'] == 'Unowned By User' def test_get_ad_reads_virus_free(fixture_client, monkeypatch): """Test get_ad_reads handler filters virus items.""" monkeypatch.setattr(email, 'send_ad_action_assigned_to_me', MagicMock()) result = fixture_client.get('/ad-reads') assert result.status_code == status.OK assert len(result.json['items']) == 3 result = fixture_client.post('/ad-read-virus-free', json={'filename': 'copies/unique-ad_copy-filename.pdf'}) assert result.status_code == status.OK result = fixture_client.get('/ad-reads') assert result.status_code == status.OK assert len(result.json['items']) == 4 def test_get_orders_by_episode_ids(fixture_client): """Test orders-by-episode-ids handler.""" result = fixture_client.get('/orders-by-episode-ids?ids=1,2') assert result.json['items'] == [ { 'id': 'mp1', 'db_id': 1, 'name': 'order 1', 'start_at': '2016-01-01T00:00:00.000Z', 'end_at': '2050-01-01T00:00:00.000Z', 'enabled': True, 'network_ids': [1, 2], 'episode_ids': [1], 'podcast_ids': [2], 'campaign_id': '1', 'position': 1, 'is_deleted': False, 'campaign': { 'id': '1', 'name': 'Random Campaign title', 'advertiser_name': 'Sarahs Business', 'is_deleted': False}, 'advertisements': [ { 'id': 'mpad1', 'insertion_point': 'pre', 'pos': '0', 'audio_file': '', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 1' }, { 'id': 'mpad2', 'insertion_point': 'mid', 'pos': '1', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 2' } ]}, { 'id': 'mp2', 'db_id': 2, 'name': 'order 2', 'start_at': '2016-01-01T00:00:00.000Z', 'end_at': '2050-01-01T00:00:00.000Z', 'enabled': True, 'network_ids': [2], 'episode_ids': [1], 'podcast_ids': [], 'campaign_id': '1', 'position': 2, 'is_deleted': False, 'campaign': { 'id': '1', 'name': 'Random Campaign title', 'advertiser_name': 'Sarahs Business', 'is_deleted': False}, 'advertisements': [ { 'id': 'mpad3', 'insertion_point': 'pre', 'pos': '0', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp2', 'name': 'advertisement 3' }, { 'id': 'mpad4', 'insertion_point': 'mid', 'pos': '1', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp2', 'name': 'advertisement 4' }, { 'id': 'mpad5', 'insertion_point': 'post', 'pos': '1', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp2', 'name': 'advertisement 5' } ]} ] def test_get_advertisements_by_order_ids(fixture_client): """Test advertisements-by-order-ids handler.""" result = fixture_client.get('/advertisements-by-order-ids?ids=mp1,mp3') assert result.json['items'] == [ { 'id': 'mpad1', 'insertion_point': 'pre', 'pos': '0', 'audio_file': '', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 1' }, { 'id': 'mpad2', 'insertion_point': 'mid', 'pos': '1', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 2' }, { 'id': 'mpad6', 'insertion_point': 'mid', 'pos': '1', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp3', 'name': 'advertisement 6' } ] def test_get_ad_actions_by_advertisement_ids(fixture_client): """Test ad-actions-by-advertisement-ids handler.""" result = fixture_client.get('/ad-actions-by-advertisement-ids?ids=mpad1,mpad2') ids = [ad_action['id'] for ad_action in result.json['items']] assert ids == [1, 5, 6] def test_get_podcast_upcoming_sold_percent_by_ids(fixture_client): """Test podcast-upcoming-sold-percent-by-ids handler.""" result = fixture_client.get('/podcast-upcoming-sold-percent-by-ids?ids=1,2') assert result.json['items'] == [ {'id': 1, 'upcoming_sold_percent': None}, {'id': 2, 'upcoming_sold_percent': None}, ] def test_get_advertisements_by_ids(fixture_client, monkeypatch): """Test get-advertisements-by-ids handler.""" result = fixture_client.get('/advertisements-by-ids?ids=mpad1,mpad2') assert result.status_code == status.OK assert result.json['items'] == [ { 'id': 'mpad1', 'insertion_point': 'pre', 'pos': '0', 'audio_file': '', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 1' }, { 'id': 'mpad2', 'insertion_point': 'mid', 'pos': '1', 'audio_file': 'yow', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 2' } ]