def test_MissingEpisodeLinkElement_RaisesRSSFormatError( self, stub_read_rssfeed): rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \ '<channel>' \ '<title>showRSS feed: Show</title>' \ '<item>' \ '<title>Show 1x01</title>' \ '</item>' \ '</channel>' stub_read_rssfeed.return_value = rssfeed with pytest.raises(RSSFormatError): get_last_episodes(None)
def test_MissingChannelElement_RaisesRSSFormatError( self, stub_read_rssfeed): rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \ '<rss version="2.0" xmlns:tv="http://showrss.info">' \ '<title>showRSS feed: Show</title>' \ '<item>' \ '<title>Show 1x01</title>' \ '<link>link1</link>' \ '</item>' \ '</rss>' stub_read_rssfeed.return_value = rssfeed with pytest.raises(RSSFormatError): get_last_episodes(None)
def test_CompleteFeedWithOneItem_RespectiveEpisode(self, stub_read_rssfeed): rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \ '<rss version="2.0" xmlns:tv="http://showrss.info">' \ '<channel>' \ '<title>showRSS feed: Castle (2009)</title>' \ '<link>http://showrss.info</link><ttl>30</ttl>' \ '<description>showRSS show feed for Castle (2009)</description>' \ '<item>' \ '<title>Castle (2009) 8x05</title>' \ '<link>magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://open.demonii.com:1337</link>' \ '<guid isPermaLink="false">a0ce46e33c916756208b92af7392f9aa2a960496</guid>' \ '<pubDate>Tue, 20 Oct 2015 02:05:03 +0000</pubDate>' \ '<description>New episode: Castle 2009 S08E05 HDTV X264 DIMENSION. Link: <a href="magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://open.demonii.com:1337">magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://open.demonii.com:1337</a></description>' \ '<tv:show_id>53</tv:show_id>' \ '<tv:show_name>Castle (2009)</tv:show_name>' \ '<tv:episode_id>927</tv:episode_id>' \ '<tv:raw_title>Castle 2009 S08E05 HDTV X264 DIMENSION</tv:raw_title>' \ '<tv:info_hash>E3A6707164B53C132E39FE0724DC5FDDFAA8E575</tv:info_hash>' \ '<enclosure url="magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://open.demonii.com:1337" length="0" type="application/x-bittorrent" />' \ '</item>' \ '</channel>' \ '</rss>' stub_read_rssfeed.return_value = rssfeed link = 'magnet:?xt=urn:btih:E3A6707164B53C132E39FE0724DC5FDDFAA8E575&dn=Castle+2009+S08E05+720p+HDTV+X264+DIMENSION&tr=udp://tracker.coppersurfer.tk:6969/announce&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://open.demonii.com:1337' expected_episodes = [ Episode('Castle (2009)', 8, 5, False, link) ] assert get_last_episodes(None) == expected_episodes
def test_FeedWithNoItems_NoEpisodes(self, stub_read_rssfeed): rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \ '<rss version="2.0" xmlns:tv="http://showrss.info">' \ '<channel>' \ '<title>showRSS feed: Show Name</title>' \ '</channel>' \ '</rss>' stub_read_rssfeed.return_value = rssfeed assert get_last_episodes(None) == []
def test_FeedWith1Item_1Episode(self, stub_read_rssfeed): rssfeed = '<?xml version="1.0" encoding="UTF-8"?>' \ '<rss version="2.0" xmlns:tv="http://showrss.info">' \ '<channel>' \ '<title>showRSS feed: Show</title>' \ '<item>' \ '<title>Show 1x01</title>' \ '<link>link</link>' \ '</item>' \ '</channel>' \ '</rss>' stub_read_rssfeed.return_value = rssfeed expected_episodes = [Episode('Show', 1, 1, False, 'link')] assert get_last_episodes(None) == expected_episodes
def _new_episodes(self, database: Database, tvshow: TVShow) -> list: return [ episode for episode in showrss.get_last_episodes(tvshow.id) if not database.episode_exists(episode) ]