from typing import List 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, HtmlTestMixin class BookmarkArchivedViewTestCase(TestCase, BookmarkFactoryMixin, HtmlTestMixin): def setUp(self) -> None: user = self.get_or_create_test_user() self.client.force_login(user) def assertVisibleBookmarks(self, response, bookmarks: List[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: List[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: List[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: List[Tag]): for tag in tags: self.assertNotContains(response, tag.name) def assertSelectedTags(self, response, tags: List[Tag]): soup = self.make_soup(response.content.decode()) selected_tags = soup.select('p.selected-tags')[0] self.assertIsNotNone(selected_tags) tag_list = selected_tags.select('a') self.assertEqual(len(tag_list), len(tags)) for tag in tags: self.assertTrue(tag.name in selected_tags.text, msg=f'Selected tags do not contain: {tag.name}') def test_should_list_archived_and_user_owned_bookmarks(self): other_user = User.objects.create_user('otheruser', 'otheruser@example.com', 'password123') visible_bookmarks = [ self.setup_bookmark(is_archived=True), self.setup_bookmark(is_archived=True), self.setup_bookmark(is_archived=True) ] invisible_bookmarks = [ self.setup_bookmark(is_archived=False), self.setup_bookmark(is_archived=True, user=other_user), ] response = self.client.get(reverse('bookmarks:archived')) self.assertContains(response, '