"""Test for Episode Replication Status logic tier.""" from unittest.mock import MagicMock import pytest from podcast.logic import episode_replication_status from podcast.models import episode_replication_status as episode_replication_status_model from podcast.models import podcast as podcast_model from podcast.utils.exc import OwsError def test_update_episode_replication_status_by_ids_success( monkeypatch, update_episode_replication_status_fixture, mock_current_network_admin_user): """Test update episode replication status by ids success.""" monkeypatch.setattr( episode_replication_status_model, 'update_status_by_ids', MagicMock(return_value=[]) ) result = episode_replication_status.update_episode_replication_status_by_ids( update_episode_replication_status_fixture ) episode_replication_status_model.update_status_by_ids.assert_called_once_with([1, 2, 3]) assert result == [] def test_update_episode_replication_status_by_ids_fails_read_only_user( mock_current_read_only_user, update_episode_replication_status_fixture): """Test update episode replication status by ids fails for read only user.""" with pytest.raises(OwsError) as err: episode_replication_status.update_episode_replication_status_by_ids( update_episode_replication_status_fixture) assert err.value.status == 403 def test_update_episode_replication_status_by_ids_fails_no_access( mock_current_network_admin_user_second, update_episode_replication_status_fixture): """Test update episode replication status by ids fails no show family access.""" with pytest.raises(OwsError) as err: episode_replication_status.update_episode_replication_status_by_ids( update_episode_replication_status_fixture) assert err.value.status == 403 def test_get_failed_bulk_episodes_replication_status(monkeypatch, podcast_fixture, mock_current_user, episode_replication_status_fixture): """Test get failed bulk replicated episodes logic.""" monkeypatch.setattr(podcast_model, 'get_podcast_by_id', MagicMock(return_value=podcast_fixture)) monkeypatch.setattr( episode_replication_status_model, 'get_failed_bulk_episodes_replication_status', MagicMock(return_value={ 'items': [episode_replication_status_fixture] }) ) result = episode_replication_status.get_failed_bulk_episodes_replication_status(5) podcast_model.get_podcast_by_id.assert_called_once_with(5) episode_replication_status_model.get_failed_bulk_episodes_replication_status.assert_called_once_with(5) assert len(result['items']) == 1 assert result['items'][0]['status'] == 'initiated' def test_get_failed_bulk_episodes_replication_status_fails(monkeypatch, podcast_fixture_2, mock_current_user, episode_replication_status_fixture): """Test get failed bulk episodes replication status logic fails for user with no access.""" monkeypatch.setattr(podcast_model, 'get_podcast_by_id', MagicMock(return_value=podcast_fixture_2)) with pytest.raises(OwsError) as err: episode_replication_status.get_failed_bulk_episodes_replication_status(2) assert err.value.status == 403 def test_get_failed_single_episodes_replication_status( monkeypatch, podcast_fixture, mock_current_user, episode_replication_status_fixture): """Test get failed replicated episodes for replication type single logic.""" monkeypatch.setattr(podcast_model, 'get_podcast_by_id', MagicMock(return_value=podcast_fixture)) monkeypatch.setattr( episode_replication_status_model, 'get_failed_single_episodes_replication_status', MagicMock(return_value={ 'items': [episode_replication_status_fixture] }) ) result = episode_replication_status.get_failed_single_episodes_replication_status(5) podcast_model.get_podcast_by_id.assert_called_once_with(5) episode_replication_status_model.get_failed_single_episodes_replication_status.assert_called_once_with(5) assert len(result['items']) == 1 assert result['items'][0]['status'] == 'initiated' def test_get_failed_single_episodes_replication_status_fails( monkeypatch, podcast_fixture_2, mock_current_user, episode_replication_status_fixture): """Test get failed episodes replication status for replication type single logic fails for user with no access.""" monkeypatch.setattr(podcast_model, 'get_podcast_by_id', MagicMock(return_value=podcast_fixture_2)) with pytest.raises(OwsError) as err: episode_replication_status.get_failed_single_episodes_replication_status(2) assert err.value.status == 403