"""Test for Podcast logic tier.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from podcast.logic import network from podcast.logic import user from podcast.logic import user_v2 as user_v2_logic from podcast.models import network as network_model from podcast.utils.exc import OwsError @patch('podcast.logic.user.podcast_ids_owned_by_current_user') @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_get_networks(mock_get_feature_flag, mock_podcast_ids_owned_by_current_user, monkeypatch, network_fixture, mock_current_admin_user): """Test get networks logic tier.""" monkeypatch.setattr(network_model, 'get_networks_by_ids', MagicMock(return_value={'items': [network_fixture]})) result = network.get_networks() mock_podcast_ids_owned_by_current_user.assert_called_once() assert result['items'] == [network_fixture] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_get_networks_for_user_with_no_networks(mock_get_feature_flag, monkeypatch, mock_current_user): """Test get networks logic tier.""" monkeypatch.setattr(user, 'network_ids_for_current_user', MagicMock(return_value=[60000])) result = network.get_networks() assert result['items'] == [] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_get_networks_for_user_podcast_level(mock_get_feature_flag, monkeypatch, mock_current_podcast_level_user): """Test get networks logic tier.""" result = network.get_networks() assert len(result['items']) == 1 assert result['items'][0]['id'] == 1 def test_create_needs_admin(mock_current_user): """Test create needs admin.""" with pytest.raises(OwsError) as err: network.create_network('a', 'b', False) assert err.value.status == 403 def test_delete_needs_admin(mock_current_user): """Test delete needs admin.""" with pytest.raises(OwsError) as err: network.delete_network('1') assert err.value.status == 403 @patch('podcast.logic.user_v2.podcast_ids_owned_by_current_user') @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_show_family_networks( mock_get_feature_flag, mock_podcast_ids_owned_by_current_user, monkeypatch, network_fixture, mock_current_admin_user): """Test get show family networks logic tier.""" monkeypatch.setattr(network_model, 'get_networks_by_ids', MagicMock(return_value={'items': [network_fixture]})) result = network.get_show_family_networks() mock_podcast_ids_owned_by_current_user.assert_called_once() assert result['items'] == [network_fixture] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_show_family_networks_for_network_admin_user( mock_get_feature_flag, monkeypatch, network_fixture, mock_current_network_admin_user): """Test get show family networks logic tier.""" result = network.get_show_family_networks() assert result['items'] == [ { 'id': 1, 'is_sony': False, 'name': 'Broccoli test', 'megaphone_id': '64756b62-7e5c-4728-895a-2f42f8969e14', 'num_shows': 2, 'num_episodes': 1 } ] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_show_family_networks_for_user_with_no_networks(mock_get_feature_flag, monkeypatch, mock_current_user): """Test get show family networks logic tier.""" monkeypatch.setattr(user, 'network_ids_for_current_user', MagicMock(return_value=[60000])) result = network.get_show_family_networks() assert result['items'] == [] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_show_family_networks_for_user_podcast_level( mock_get_feature_flag, monkeypatch, mock_current_podcast_level_user): """Test get show family networks logic tier.""" result = network.get_show_family_networks() assert len(result['items']) == 1 assert result['items'][0]['id'] == 1 @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_show_family_networks_for_user_show_level(mock_get_feature_flag, monkeypatch, mock_current_show_level_user): """Test get show family networks logic tier.""" result = network.get_show_family_networks() assert result['items'] == [] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_get_networks_by_ids_podcast_level(mock_get_feature_flag, monkeypatch, mock_current_podcast_level_user): """Test get networks by ids.""" monkeypatch.setattr(user, 'current_user_owns_network_ids_or_raise', MagicMock()) network.get_networks_by_ids([1]) user.current_user_owns_network_ids_or_raise.assert_called_once() @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_networks_by_ids_show_family_level(mock_get_feature_flag, monkeypatch, mock_current_podcast_level_user): """Test get networks by ids.""" monkeypatch.setattr(user_v2_logic, 'current_user_owns_network_ids_or_raise', MagicMock()) network.get_networks_by_ids([1]) user_v2_logic.current_user_owns_network_ids_or_raise.assert_called_once()