Add RSS feeds (#305)

* Add basic unread bookmarks feed

* Generate user-specific feed

* Add feed tests

* Add all bookmarks feed

* Add feed token admin

* Add note about renewing URLs

* Add support for query parameter

* Fix rebase issues

* Improve docs on feeds integration

Co-authored-by: Sascha Ißbrücker <sascha.issbruecker@gmail.com>
This commit is contained in:
Sascha Ißbrücker
2022-07-23 23:20:27 +02:00
committed by GitHub
parent 13ff9ac4f8
commit 54ce6d5fe6
10 changed files with 371 additions and 9 deletions

View File

@@ -3,6 +3,7 @@ from django.urls import reverse
from rest_framework.authtoken.models import Token
from bookmarks.tests.helpers import BookmarkFactoryMixin
from bookmarks.models import FeedToken
class SettingsIntegrationsViewTestCase(TestCase, BookmarkFactoryMixin):
@@ -38,3 +39,28 @@ class SettingsIntegrationsViewTestCase(TestCase, BookmarkFactoryMixin):
self.client.get(reverse('bookmarks:settings.integrations'))
self.assertEqual(Token.objects.count(), 1)
def test_should_generate_feed_token_if_not_exists(self):
self.assertEqual(FeedToken.objects.count(), 0)
self.client.get(reverse('bookmarks:settings.integrations'))
self.assertEqual(FeedToken.objects.count(), 1)
token = FeedToken.objects.first()
self.assertEqual(token.user, self.user)
def test_should_not_generate_feed_token_if_exists(self):
FeedToken.objects.get_or_create(user=self.user)
self.assertEqual(FeedToken.objects.count(), 1)
self.client.get(reverse('bookmarks:settings.integrations'))
self.assertEqual(FeedToken.objects.count(), 1)
def test_should_display_feed_urls(self):
response = self.client.get(reverse('bookmarks:settings.integrations'))
html = response.content.decode()
token = FeedToken.objects.first()
self.assertInHTML(f'<a href="http://testserver/feeds/{token.key}/all">All bookmarks</a>', html)
self.assertInHTML(f'<a href="http://testserver/feeds/{token.key}/unread">Unread bookmarks</a>', html)