"""Test for Podcast season logic tier.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from podcast.logic import podcast_season from podcast.models import podcast_season as podcast_season_model from podcast.utils.exc import OwsError @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_get_seasons_status(mock_get_feature_flag, monkeypatch, mock_current_network_admin_user): """Test get seasons status.""" expected = { 'items': [ {'season_id': 1, 'is_active': True}, {'season_id': 2, 'is_active': False} ] } monkeypatch.setattr(podcast_season_model, 'get_seasons_status', MagicMock(return_value=expected)) result = podcast_season_model.get_seasons_status([1, 2]) podcast_season_model.get_seasons_status.assert_called_once_with([1, 2]) assert expected == result @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_get_seasons_status_no_access(mock_get_feature_flag, mock_current_network_admin_user_second): """Test get seasons status no access.""" with pytest.raises(OwsError) as err: podcast_season.get_seasons_status([1, 2]) assert err.value.status == 403 @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_seasons_status_show_family_access( mock_get_feature_flag, monkeypatch, mock_current_podcast_level_user): """Test get seasons status show family access.""" expected = { 'items': [ {'season_id': 1, 'is_active': True}, {'season_id': 2, 'is_active': False} ] } monkeypatch.setattr(podcast_season_model, 'get_seasons_status', MagicMock(return_value=expected)) result = podcast_season_model.get_seasons_status([1, 2]) podcast_season_model.get_seasons_status.assert_called_once_with([1, 2]) assert expected == result @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_get_seasons_status_show_family_no_access(mock_get_feature_flag, mock_current_network_admin_user_second): """Test get seasons status show family no access.""" with pytest.raises(OwsError) as err: podcast_season.get_seasons_status([1, 2]) assert err.value.status == 403