diff options
author | Jelle van der Waa <jelle@archlinux.org> | 2020-03-06 22:54:46 +0100 |
---|---|---|
committer | Jelle van der Waa <jelle@archlinux.org> | 2020-03-06 22:54:46 +0100 |
commit | e3b419bcfe1cd88068ea0561e5b408ca7dcf2e97 (patch) | |
tree | 183c9c214edf950fe17ee044bd43ad069ef508c2 /planet/tests/test_command.py | |
parent | 6c796fce1d0928112f83ea01efe95ab3d24d7fa9 (diff) | |
download | archweb-e3b419bcfe1cd88068ea0561e5b408ca7dcf2e97.tar.gz archweb-e3b419bcfe1cd88068ea0561e5b408ca7dcf2e97.zip |
planet: add tests for updating planet
Diffstat (limited to 'planet/tests/test_command.py')
-rw-r--r-- | planet/tests/test_command.py | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/planet/tests/test_command.py b/planet/tests/test_command.py new file mode 100644 index 00000000..e93ce51a --- /dev/null +++ b/planet/tests/test_command.py @@ -0,0 +1,89 @@ +import time +from unittest import mock + +from django.test import TestCase + +from planet.models import Feed, FeedItem +from planet.management.commands.update_planet import Command + + +class Result(dict): + status = 200 + entries = [] + + def get(self, value): + return getattr(self, value) + +class Entry(dict): + title = 'title' + description = 'lorem ipsum' + author = 'John Doe' + published_parsed = time.localtime(time.time()) + link = 'https://archlinux.org' + updated_parsed = None + + def get(self, value): + return getattr(self, value) + + +class UpdatePlanetTest(TestCase): + + def setUp(self): + self.command = Command() + self.feed = Feed(title='test', website='http://archlinux.org', + website_rss='http://archlinux.org/feed.rss') + + # Test when feedparser receives an exception and returns no status + @mock.patch('feedparser.parse') + def test_parse_feed_wrong(self, parse): + parse.return_value = {} + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 0 + + @mock.patch('feedparser.parse') + def test_parse_feed_304(self, parse): + parse.return_value = {'status': 304} + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 0 + + @mock.patch('feedparser.parse') + def test_parse_feed_unknown(self, parse): + parse.return_value = {'status': 201} + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 0 + + @mock.patch('feedparser.parse') + def test_parse_entries_empty(self, parse): + parse.return_value = Result() + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 0 + + @mock.patch('feedparser.parse') + def test_parse_entries_not_published(self, parse): + value = Result() + entry = Entry() + entry.published_parsed = None + value.entries = [entry] + parse.return_value = value + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 0 + + @mock.patch('feedparser.parse') + def test_parse_entries(self, parse): + value = Result() + value.entries = [Entry()] + parse.return_value = value + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 1 + + @mock.patch('feedparser.parse') + def test_parse_entries_atom(self, parse): + value = Result() + entry = Entry() + entry.published_parsed = None + entry.updated_parsed = time.localtime(time.time()) + + value.entries = [entry] + parse.return_value = value + self.command.parse_feed(self.feed) + assert FeedItem.objects.count() == 1 |