"""Test for the Api to Episodes.""" from unittest.mock import MagicMock from unittest.mock import patch from podcast.models.api_episode import ApiEpisode def test_get_episodes(): """Test the episodes end point.""" episode = ApiEpisode(podcast_network_id=1) episode._paginated_get = MagicMock(return_value={'content': [{'id': 'cow'}]}) result = episode.get_all(555, 1, 10) assert result['content'][0]['id'] == 'cow' episode._paginated_get.assert_called_once_with('podcasts/555/episodes?page=1&per_page=10') def test_get_episode(): """Test the episode end point.""" episode = ApiEpisode(podcast_network_id=1) episode._get = MagicMock(return_value={'id': 'cow'}) result = episode.get('podcast_id', 'id') assert result['id'] == 'cow' episode._get.assert_called_with('podcasts/podcast_id/episodes/id') def test_create_episode(): """Test the create end point.""" episode = ApiEpisode(podcast_network_id=1) episode._post = MagicMock(return_value={'id': 'cow'}) episode_data = { 'title': 'The Best Episode in the Universe', 'pubdate': '2016-06-01T14:54:02.690Z', } result = episode.create('id', episode_data) episode._post.assert_called_once_with('podcasts/id/episodes', episode_data) assert result['id'] == 'cow' def test_delete_episode(): """Test the delete episode end point.""" episode = ApiEpisode(podcast_network_id=1) episode._delete = MagicMock(return_value={'success': 'message'}) result = episode.delete('podcast_id', 'id') assert 'success' in result episode._delete.assert_called_with('podcasts/podcast_id/episodes/id') @patch('podcast.models.api_episode.ApiEpisode.get') def test_update_episode(mp_get_request_mock): """Test the update episode end point.""" episode = ApiEpisode(podcast_network_id=1) mp_get_request_mock.return_value = { 'id': 1, 'audioFileProcessing': False } episode._put = MagicMock(return_value={'title': 'Bingy!'}) data = {'title': 'Bingy!'} result = episode.update('podcast_id', 'id', data) assert result['title'] == 'Bingy!' episode._put.assert_called_with('podcasts/podcast_id/episodes/id', data, False) @patch('requests.post') def test_create_two_episodes_in_different_networks(requests_mock): """Test that API uses different urls for different networks.""" requests_mock.return_value = MagicMock(status_code=200) api_episode_1 = ApiEpisode(podcast_network_id=1) api_episode_2 = ApiEpisode(podcast_network_id=2) episode_data = { 'title': 'The Best Episode in the Universe', 'pubdate': '2016-06-01T14:54:02.690Z', } api_episode_1.create(podcast_id=1, episode_data=episode_data) requests_mock.assert_called_with( 'https://cms.megaphone.fm/api/networks/64756b62-7e5c-4728-895a-2f42f8969e14/podcasts/1/episodes', headers=api_episode_1._headers(), json=episode_data ) api_episode_2.create(podcast_id=2, episode_data=episode_data) requests_mock.assert_called_with( 'https://cms.megaphone.fm/api/networks/74756b62-7e5c-4728-895a-2f42f8969e15/podcasts/2/episodes', headers=api_episode_2._headers(), json=episode_data )