"""Unit tests for Advertisement model.""" from podcast.connectors import mysql from podcast.models import advertisement as advertisement_model def test_get_advertisements_by_megaphone_ids_network_level(monkeypatch, mock_current_user): """Test get advertisements by ids for a network level user.""" results = advertisement_model.get_advertisements_by_megaphone_ids(['mpad2', 'mpad3', 'mpad4'])['items'] assert len(results) == 1 assert results[0] == { 'id': 'mpad2', 'audio_file': 'yow', 'insertion_point': 'mid', 'pos': '1', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 2' } def test_get_advertisements_by_megaphone_ids_show_level(monkeypatch, mock_current_podcast_level_user): """Test get advertisements by ids for a show level user.""" results = advertisement_model.get_advertisements_by_megaphone_ids(['mpad1', 'mpad3', 'mpad6'])['items'] assert len(results) == 2 assert results[0]['id'] == 'mpad1' assert results[1]['id'] == 'mpad3' def test_get_advertisement_by_order_ids(output_cdn_fixture, mock_current_admin_user): """Test advertisement get by order ids.""" result = advertisement_model.get_advertisements_by_order_ids(['mp1']) assert result['items'] == [ { 'id': 'mpad1', 'audio_file': '', 'insertion_point': 'pre', 'pos': '0', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 1' }, { 'id': 'mpad2', 'audio_file': 'yow', 'insertion_point': 'mid', 'pos': '1', 'campaign_order_megaphone_id': 'mp1', 'name': 'advertisement 2' } ] def test_delete_advertisements(): """Test advertisement deletion.""" result = advertisement_model.get_advertisements_by_order_ids(['mp2']) assert result['items'] == [{ 'id': 'mpad3', 'audio_file': 'yow', 'insertion_point': 'pre', 'pos': '0', 'campaign_order_megaphone_id': 'mp2', 'name': 'advertisement 3' }, { 'id': 'mpad4', 'audio_file': 'yow', 'insertion_point': 'mid', 'pos': '1', 'campaign_order_megaphone_id': 'mp2', 'name': 'advertisement 4' }, { 'id': 'mpad5', 'audio_file': 'yow', 'insertion_point': 'post', 'pos': '1', 'campaign_order_megaphone_id': 'mp2', 'name': 'advertisement 5' }] new_advertisements = [ { 'id': 'mpad6', 'audio_file': 'yowza', 'insertion_point': 'pre', 'pos': '0', 'order_id': 'mp2' }, { 'id': 'mpad4', 'audio_file': 'yow', 'insertion_point': 'mid', 'pos': '1', 'order_id': 'mp2' }, { 'id': 'mpad7', 'audio_file': 'yowie', 'insertion_point': 'post', 'pos': '1', 'order_id': 'mp2' } ] with mysql.pod_db_session() as session: advertisement_model._delete_old_advertisements(session, new_advertisements, 'mp2') result = advertisement_model.get_advertisements_by_order_ids(['mp2']) result_ids = [ad['id'] for ad in result['items']] assert 'mpad3' in result_ids assert 'mpad4' in result_ids assert 'mpad5' not in result_ids