Beispiel #1
0
    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()]
Beispiel #2
0
    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])
Beispiel #3
0
    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'])
Beispiel #5
0
    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>&lt;p&gt;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')
Beispiel #7
0
    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
Beispiel #8
0
    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)
Beispiel #9
0
 def setUp(self):
     super().setUp()
     self.backend = RSS(RSS_FEED_URL, archive=self.archive)
Beispiel #10
0
    def test_has_resuming(self):
        """Test if it returns False when has_resuming is called"""

        self.assertEqual(RSS.has_resuming(), False)
Beispiel #11
0
    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)