mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-07 10:58:25 +02:00
133 lines
5.0 KiB
Python
133 lines
5.0 KiB
Python
from django.forms import model_to_dict
|
|
from django.test import TestCase
|
|
from django.urls import reverse
|
|
|
|
from bookmarks.models import Bookmark
|
|
from bookmarks.tests.helpers import BookmarkFactoryMixin
|
|
|
|
|
|
class BookmarkBulkEditViewTestCase(TestCase, BookmarkFactoryMixin):
|
|
|
|
def setUp(self) -> None:
|
|
user = self.get_or_create_test_user()
|
|
self.client.force_login(user)
|
|
|
|
def assertBookmarksAreUnmodified(self, bookmarks: [Bookmark]):
|
|
self.assertEqual(len(bookmarks), Bookmark.objects.count())
|
|
|
|
for bookmark in bookmarks:
|
|
self.assertEqual(model_to_dict(bookmark), model_to_dict(Bookmark.objects.get(id=bookmark.id)))
|
|
|
|
def test_bulk_archive(self):
|
|
bookmark1 = self.setup_bookmark()
|
|
bookmark2 = self.setup_bookmark()
|
|
bookmark3 = self.setup_bookmark()
|
|
|
|
self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_archive': [''],
|
|
'bookmark_id': [str(bookmark1.id), str(bookmark2.id), str(bookmark3.id)],
|
|
})
|
|
|
|
self.assertTrue(Bookmark.objects.get(id=bookmark1.id).is_archived)
|
|
self.assertTrue(Bookmark.objects.get(id=bookmark2.id).is_archived)
|
|
self.assertTrue(Bookmark.objects.get(id=bookmark3.id).is_archived)
|
|
|
|
def test_bulk_unarchive(self):
|
|
bookmark1 = self.setup_bookmark(is_archived=True)
|
|
bookmark2 = self.setup_bookmark(is_archived=True)
|
|
bookmark3 = self.setup_bookmark(is_archived=True)
|
|
|
|
self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_unarchive': [''],
|
|
'bookmark_id': [str(bookmark1.id), str(bookmark2.id), str(bookmark3.id)],
|
|
})
|
|
|
|
self.assertFalse(Bookmark.objects.get(id=bookmark1.id).is_archived)
|
|
self.assertFalse(Bookmark.objects.get(id=bookmark2.id).is_archived)
|
|
self.assertFalse(Bookmark.objects.get(id=bookmark3.id).is_archived)
|
|
|
|
def test_bulk_delete(self):
|
|
bookmark1 = self.setup_bookmark()
|
|
bookmark2 = self.setup_bookmark()
|
|
bookmark3 = self.setup_bookmark()
|
|
|
|
self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_delete': [''],
|
|
'bookmark_id': [str(bookmark1.id), str(bookmark2.id), str(bookmark3.id)],
|
|
})
|
|
|
|
self.assertIsNone(Bookmark.objects.filter(id=bookmark1.id).first())
|
|
self.assertFalse(Bookmark.objects.filter(id=bookmark2.id).first())
|
|
self.assertFalse(Bookmark.objects.filter(id=bookmark3.id).first())
|
|
|
|
def test_bulk_tag(self):
|
|
bookmark1 = self.setup_bookmark()
|
|
bookmark2 = self.setup_bookmark()
|
|
bookmark3 = self.setup_bookmark()
|
|
tag1 = self.setup_tag()
|
|
tag2 = self.setup_tag()
|
|
|
|
self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_tag': [''],
|
|
'bulk_tag_string': [f'{tag1.name} {tag2.name}'],
|
|
'bookmark_id': [str(bookmark1.id), str(bookmark2.id), str(bookmark3.id)],
|
|
})
|
|
|
|
bookmark1.refresh_from_db()
|
|
bookmark2.refresh_from_db()
|
|
bookmark3.refresh_from_db()
|
|
|
|
self.assertCountEqual(bookmark1.tags.all(), [tag1, tag2])
|
|
self.assertCountEqual(bookmark2.tags.all(), [tag1, tag2])
|
|
self.assertCountEqual(bookmark3.tags.all(), [tag1, tag2])
|
|
|
|
def test_bulk_untag(self):
|
|
tag1 = self.setup_tag()
|
|
tag2 = self.setup_tag()
|
|
bookmark1 = self.setup_bookmark(tags=[tag1, tag2])
|
|
bookmark2 = self.setup_bookmark(tags=[tag1, tag2])
|
|
bookmark3 = self.setup_bookmark(tags=[tag1, tag2])
|
|
|
|
self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_untag': [''],
|
|
'bulk_tag_string': [f'{tag1.name} {tag2.name}'],
|
|
'bookmark_id': [str(bookmark1.id), str(bookmark2.id), str(bookmark3.id)],
|
|
})
|
|
|
|
bookmark1.refresh_from_db()
|
|
bookmark2.refresh_from_db()
|
|
bookmark3.refresh_from_db()
|
|
|
|
self.assertCountEqual(bookmark1.tags.all(), [])
|
|
self.assertCountEqual(bookmark2.tags.all(), [])
|
|
self.assertCountEqual(bookmark3.tags.all(), [])
|
|
|
|
def test_bulk_edit_handles_empty_bookmark_id(self):
|
|
bookmark1 = self.setup_bookmark()
|
|
bookmark2 = self.setup_bookmark()
|
|
bookmark3 = self.setup_bookmark()
|
|
|
|
response = self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_archive': [''],
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
response = self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bulk_archive': [''],
|
|
'bookmark_id': [],
|
|
})
|
|
self.assertEqual(response.status_code, 302)
|
|
|
|
self.assertBookmarksAreUnmodified([bookmark1, bookmark2, bookmark3])
|
|
|
|
def test_empty_action_does_not_modify_bookmarks(self):
|
|
bookmark1 = self.setup_bookmark()
|
|
bookmark2 = self.setup_bookmark()
|
|
bookmark3 = self.setup_bookmark()
|
|
|
|
self.client.post(reverse('bookmarks:bulk_edit'), {
|
|
'bookmark_id': [str(bookmark1.id), str(bookmark2.id), str(bookmark3.id)],
|
|
})
|
|
|
|
self.assertBookmarksAreUnmodified([bookmark1, bookmark2, bookmark3])
|