def test_fetch_from_non_set_cache(self): """Test if a error is raised when the cache was not set""" rss = RSS(RSS_FEED_URL) with self.assertRaises(CacheError): _ = [entry for entry in rss.fetch_from_cache()]
def test_fetch(self): """Test whether a list of entries is returned""" http_requests = configure_http_server() # Test fetch entries from feed rss = RSS(RSS_FEED_URL) entries = [entry for entry in rss.fetch()] self.assertEqual(len(entries), 30) self.assertEqual(len(http_requests), 1) # Test metadata expected = [('98572defb3a652afbfdfe96517edefb88a22dcfa', 1481044620.0, 'Connect 2016 Developer Workshop'), ('e3b0d7463fca0c47d82debc3ddc37d8906f77548', 1480955040.0, 'Create a URL Shortener with Node.js and Couchbase using N1QL'), ('28bca39353ff0825f53b157b69da319e2f49ab4d', 1480886040.0, 'ELT processing with Couchbase and N1QL')] for x in range(len(expected)): entry = entries[x] self.assertEqual(entry['origin'], 'http://example.com/rss') self.assertEqual(entry['uuid'], expected[x][0]) self.assertEqual(entry['updated_on'], expected[x][1]) self.assertEqual(entry['category'], 'entry') self.assertEqual(entry['tag'], 'http://example.com/rss') self.assertEqual(entry['data']['title'], expected[x][2])
def test_fetch_from_empty_cache(self): """Test if there are not any entries returned when the cache is empty""" cache = Cache(self.tmp_path) rss = RSS(RSS_FEED_URL, cache=cache) cached_entries = [entry for entry in rss.fetch_from_cache()] self.assertEqual(len(cached_entries), 0)
def test_search_fields(self): """Test whether the search_fields is properly set""" configure_http_server() rss = RSS(RSS_FEED_URL) entries = [entry for entry in rss.fetch()] for entry in entries: self.assertEqual(rss.metadata_id(entry['data']), entry['search_fields']['item_id'])
def test_fetch_empty(self): """Test whether it works when no entries are fetched""" body = """ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <rss version="2.0"> </rss> """ httpretty.register_uri(httpretty.GET, RSS_FEED_URL, body=body, status=200) rss = RSS(RSS_FEED_URL) entries = [entry for entry in rss.fetch()] self.assertEqual(len(entries), 0)
def test_parse(self): """Test whether the parser works """ xml_feed = read_file('data/rss/rss_entries.xml') json_feed = RSS.parse_feed(xml_feed)['entries'] entry = json_feed[0] """ rss version="2.0" <entry><title>Connect 2016 Developer Workshop</title> <link>http://blog.couchbase.com/2016/november/connect-2016-developer-workshop</link> <description><p>For the first day ... </description> <pubDate>Tue, 06 Dec 2016 17:17:00 +0000</pubDate> <author>Matthew Groves</author> <avatar>/content/gallery/speakers/speakersCouchbase/mebricks.jpg/mebricks.jpg/hippogallery:original</avatar> </entry> """ self.assertEqual(entry['title'], 'Connect 2016 Developer Workshop') self.assertEqual(entry['published'], 'Tue, 06 Dec 2016 17:17:00 +0000') self.assertEqual( entry['avatar'], '/content/gallery/speakers/speakersCouchbase/mebricks.jpg/mebricks.jpg/hippogallery:original' ) self.assertEqual( entry['link'], 'http://blog.couchbase.com/2016/november/connect-2016-developer-workshop' ) self.assertEqual(len(entry['summary']), 410) self.assertEqual(entry['author'], 'Matthew Groves')
def test_fetch_from_cache(self): """Test whether the cache works""" http_requests = configure_http_server() # First, we fetch the entries from the server, storing them # in a cache cache = Cache(self.tmp_path) rss = RSS(RSS_FEED_URL, cache=cache) entries = [entry for entry in rss.fetch()] self.assertEqual(len(http_requests), 1) # Now, we get the entries from the cache. # The contents should be the same and there won't be # any new request to the server cached_entries = [entry for entry in rss.fetch_from_cache()] self.assertEqual(len(cached_entries), len(entries)) self.assertEqual(len(http_requests), 1) # no more requests done
def test_initialization(self): """Test whether attributes are initializated""" rss = RSS(RSS_FEED_URL, tag='test') self.assertEqual(rss.url, RSS_FEED_URL) self.assertEqual(rss.origin, RSS_FEED_URL) self.assertEqual(rss.tag, 'test') self.assertIsNone(rss.client) # When tag is empty or None it will be set to # the value in url rss = RSS(RSS_FEED_URL) self.assertEqual(rss.url, RSS_FEED_URL) self.assertEqual(rss.origin, RSS_FEED_URL) self.assertEqual(rss.tag, RSS_FEED_URL) rss = RSS(RSS_FEED_URL, tag='') self.assertEqual(rss.url, RSS_FEED_URL) self.assertEqual(rss.origin, RSS_FEED_URL) self.assertEqual(rss.tag, RSS_FEED_URL)
def setUp(self): super().setUp() self.backend = RSS(RSS_FEED_URL, archive=self.archive)
def test_has_resuming(self): """Test if it returns False when has_resuming is called""" self.assertEqual(RSS.has_resuming(), False)
def test_has_archiving(self): """Test if it returns True when has_archiving is called""" self.assertEqual(RSS.has_archiving(), True)
def setUp(self): super().setUp() self.backend_write_archive = RSS(RSS_FEED_URL, archive=self.archive) self.backend_read_archive = RSS(RSS_FEED_URL, archive=self.archive)