"""Tests for RSS ingester.""" from unittest.mock import MagicMock from defusedxml.ElementTree import fromstring from dev import rss_ingester rss = b""" New Show aoeuaoeu en oaeuoaeu Description image.jpg New Show aoeuaoeu serial euaueoau Description Sony Music podcasts@sonymusic.com oaeuaeouaeo description2 Thu, 23 Jan 2020 17:54:00 -0000 full 1 2 euaueoau description2 description2

]]>
365 no
""" mock_categories = [ {'id': 1, 'parent_id': None, 'name': 'Arts', 'active': True, 'children': [ {'id': 20, 'parent_id': 1, 'name': 'Books', 'active': True} ]}, {'id': 3, 'parent_id': None, 'name': 'Comedy', 'active': True} ] def test_rss_ingester(monkeypatch): """Test the rss ingester.""" monkeypatch.setattr(rss_ingester, 'log', MagicMock(return_value=rss)) monkeypatch.setattr(rss_ingester, 'get_feed_content', MagicMock(return_value=rss)) monkeypatch.setattr(rss_ingester, 'create_podcast_request', MagicMock(return_value=1)) monkeypatch.setattr(rss_ingester, 'get_categories_request', MagicMock(return_value=mock_categories)) monkeypatch.setattr(rss_ingester, 'create_episode_request', MagicMock(return_value=2)) rss_ingester.process('feed_url', 'network_id', 'slug', 'localhost', 'localhost:5001', 10) rss_ingester.log.assert_called_with( "Feed could not be found Invalid URL 'movie.mp3': No scheme supplied. Perhaps you meant https://movie.mp3?" ) rss_ingester.create_podcast_request.assert_called_once_with( 'localhost', { 'title': 'New Show', 'link': 'aoeuaoeu', 'description': 'Description', 'copyright': 'oaeuoaeu', 'show_type': 'serial', 'language': 'en', 'host': 'euaueoau', 'image': 'image.jpg', 'explicit': None, 'categories': [1, 3], 'email': 'podcasts@sonymusic.com', 'owner': 'Sony Music', 'slug': 'slug', 'network_id': 'network_id', 'artwork_filename': None } ) rss_ingester.create_episode_request.assert_called_once_with( 'localhost', 1, { 'title': 'oaeuaeouaeo', 'description': 'description2', 'season_number': '1', 'episode_number': '2', 'episode_type': 'full', 'content': 'clean', 'published_date': 'Thu, 23 Jan 2020 17:54:00 -0000', 'image': 'image2.jpg', 'audio': 'movie.mp3', 'draft': False, 'artwork_filename': None, 'audio_filename': None } ) def test_get_podcast_info(): """Test the rss podcast parse.""" et = fromstring(rss) channel = et[0] result = rss_ingester.get_podcast_info(channel) assert result == { 'categories': [ ['Arts', 'Fashion & Beauty'], ['Comedy'], ['Society & Culture', 'Relationships'] ], 'copyright': 'oaeuoaeu', 'description': 'Description', 'email': 'podcasts@sonymusic.com', 'explicit': None, 'host': 'euaueoau', 'image': 'image.jpg', 'language': 'en', 'link': 'aoeuaoeu', 'owner': 'Sony Music', 'show_type': 'serial', 'title': 'New Show' } def test_get_episode_info(): """Test the rss episode parse.""" et = fromstring(rss) channel = et[0] result = rss_ingester.get_episode_info(channel.findall('item')[0]) assert result == { 'audio': 'movie.mp3', 'content': 'no', 'description': 'description2', 'episode_number': '2', 'episode_type': 'full', 'image': 'image2.jpg', 'published_date': 'Thu, 23 Jan 2020 17:54:00 -0000', 'season_number': '1', 'title': 'oaeuaeouaeo' }