def test__update_feed__updates_feed__if_relation_exists(self) -> None: title = 'test2' data = FeedParserDict({'feed': {'title': title}}) FeedUpdater._update_feed(self.feed_subscription, data) self.feed.refresh_from_db() self.assertEqual(self.feed.title, title)
def test__update_feed__creates_feed__if_relation_is_missing(self) -> None: self.feed.delete() title = 'test2' data = FeedParserDict({'feed': {'title': title}}) FeedUpdater._update_feed(self.feed_subscription, data) self.assertEqual(self.feed_subscription.feed.title, title)
def test__update__fail__on_invalid_rss(self) -> None: feed_subscription = FeedSubscription.objects.create( owner=self.user, url='https://www.google.com/') with self.assertRaises(FeedUpdaterInvalidRSSError): FeedUpdater.update(feed_subscription.id) feed_subscription.refresh_from_db() self.assertEqual(feed_subscription.retries, 1)
def test__update_categories__replace_old_categories_with_new(self) -> None: FeedCategory.objects.create(feed=self.feed, keyword='old_keyword') new_keyword = 'keyword' feed_data = FeedParserDict({'feed': { 'tags': [{ 'term': 'keyword', }] }}) FeedUpdater._update_categories(self.feed, feed_data) category_count = FeedCategory.objects.filter(feed=self.feed).count() self.assertEqual(category_count, 1) feed_category = FeedCategory.objects.filter(feed=self.feed).first() self.assertEqual(feed_category.keyword, new_keyword)
def test__update__save_and_return_data__on_valid_rss(self) -> None: feed_subscription = FeedSubscription.objects.create( owner=self.user, url='http://www.nu.nl/rss/Algemeen') feed, feed_data = FeedUpdater.update(feed_subscription.id) self.assertIsNotNone(feed.id) self.assertTrue(bool(feed_data))
def update_feed(feed_subscription_id: int) -> None: """ Update Feed based on FeedSubscription. :param feed_subscription_id: FeedSubscription.id for related Feed. """ try: feed, feed_items_data = FeedUpdater.update(feed_subscription_id) except Exception as e: logger.error(e) return for feed_item_data in feed_items_data: update_feed_item.delay(feed.id, feed_item_data)
def test__get_feed_data__dont_raise_exception__on_valid_url(self) -> None: try: FeedUpdater._get_feed_data('http://www.nu.nl/rss/Algemeen') except FeedUpdaterInvalidRSSError: self.fail( 'clean() raised FeedUpdaterInvalidRSSError unexpectedly.')
def test__get_feed_data__raise_exception__on_not_rss_url(self) -> None: with self.assertRaises(FeedUpdaterInvalidRSSError): FeedUpdater._get_feed_data('https://www.google.com/')
def test__get_feed_data__raise_exception__on_invalid_url(self) -> None: with self.assertRaises(FeedUpdaterInvalidRSSError): FeedUpdater._get_feed_data('invalid_url')
def test__get_feed_subscription__return__if_exists(self) -> None: feed_subscription = FeedUpdater._get_feed_subscription( self.feed_subscription.id) self.assertEqual(feed_subscription.id, self.feed_subscription.id)
def test__get_feed_subscription__raise__if_not_exists(self) -> None: with self.assertRaises(FeedUpdaterDoesntExistError): FeedUpdater._get_feed_subscription(0)