"""Test for Search logic tier.""" from unittest.mock import MagicMock from unittest.mock import patch from podcast.logic import search from podcast.models import episode, network, podcast @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=False) def test_search( mock_get_feature_flag, monkeypatch, mock_current_admin_user, network_fixture, podcast_fixture, episode_fixture ): """Test search.""" monkeypatch.setattr(network, 'search_networks', MagicMock(return_value=[network_fixture])) monkeypatch.setattr(podcast, 'search_podcasts', MagicMock(return_value=[podcast_fixture])) monkeypatch.setattr(episode, 'search_episodes', MagicMock(return_value=[episode_fixture])) result = search.search('an') podcast.search_podcasts.assert_called_once_with('an', [1, 2]) episode.search_episodes.assert_called_once_with('an', [1, 2]) assert result['items'] == [network_fixture, podcast_fixture, episode_fixture] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_search_show_family_access_admin( mock_get_feature_flag, monkeypatch, mock_current_admin_user, network_fixture, podcast_fixture, episode_fixture ): """Test search showfamily access admin.""" monkeypatch.setattr(network, 'search_networks', MagicMock(return_value=[network_fixture])) monkeypatch.setattr(podcast, 'search_podcasts', MagicMock(return_value=[podcast_fixture])) monkeypatch.setattr(episode, 'search_episodes', MagicMock(return_value=[episode_fixture])) result = search.search('an') network.search_networks.assert_called_once_with('an', [1, 2, 3]) podcast.search_podcasts.assert_called_once_with('an', [1, 2, 3, 4]) episode.search_episodes.assert_called_once_with('an', [1, 2, 3, 4]) assert result['items'] == [network_fixture, podcast_fixture, episode_fixture] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_search_show_family_access_network_admin( mock_get_feature_flag, monkeypatch, mock_current_network_admin_user, network_fixture, podcast_fixture, episode_fixture ): """Test search showfamily access network admin.""" monkeypatch.setattr(network, 'search_networks', MagicMock(return_value=[network_fixture])) monkeypatch.setattr(podcast, 'search_podcasts', MagicMock(return_value=[podcast_fixture])) monkeypatch.setattr(episode, 'search_episodes', MagicMock(return_value=[episode_fixture])) result = search.search('an') network.search_networks.assert_called_once_with('an', [1]) podcast.search_podcasts.assert_called_once_with('an', [1, 3]) episode.search_episodes.assert_called_once_with('an', [1, 3]) assert result['items'] == [network_fixture, podcast_fixture, episode_fixture] @patch('podcast.utils.feature_flag_utils.get_feature_flag', return_value=True) def test_search_show_family_no_access( mock_get_feature_flag, monkeypatch, mock_current_network_admin_user_second): """Test search showfamily no access for network admin.""" monkeypatch.setattr(network, 'search_networks', MagicMock(return_value=[])) monkeypatch.setattr(podcast, 'search_podcasts', MagicMock(return_value=[])) monkeypatch.setattr(episode, 'search_episodes', MagicMock(return_value=[])) result = search.search('an') network.search_networks.assert_called_once_with('an', [3]) podcast.search_podcasts.assert_called_once_with('an', []) episode.search_episodes.assert_called_once_with('an', []) assert result['items'] == []