import urllib.parse from django.contrib.auth.models import User from django.test import TestCase from django.urls import reverse from bookmarks.models import Bookmark, Tag, UserProfile from bookmarks.tests.helpers import BookmarkFactoryMixin class BookmarkIndexViewTestCase(TestCase, BookmarkFactoryMixin): def setUp(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) def assertVisibleBookmarks(self, response, bookmarks: [Bookmark], link_target: str = '_blank'): html = response.content.decode() self.assertContains(response, 'data-is-bookmark-item', count=len(bookmarks)) for bookmark in bookmarks: self.assertInHTML( f'{bookmark.resolved_title}', html ) def assertInvisibleBookmarks(self, response, bookmarks: [Bookmark], link_target: str = '_blank'): html = response.content.decode() for bookmark in bookmarks: self.assertInHTML( f'{bookmark.resolved_title}', html, count=0 ) def assertVisibleTags(self, response, tags: [Tag]): self.assertContains(response, 'data-is-tag-item', count=len(tags)) for tag in tags: self.assertContains(response, tag.name) def assertInvisibleTags(self, response, tags: [Tag]): for tag in tags: self.assertNotContains(response, tag.name) def test_should_list_unarchived_and_user_owned_bookmarks(self): other_user = User.objects.create_user('otheruser', 'otheruser@example.com', 'password123') visible_bookmarks = [ self.setup_bookmark(), self.setup_bookmark(), self.setup_bookmark() ] invisible_bookmarks = [ self.setup_bookmark(is_archived=True), self.setup_bookmark(user=other_user), ] response = self.client.get(reverse('bookmarks:index')) self.assertContains(response, '