mirror of
https://github.com/sissbruecker/linkding.git
synced 2025-08-11 20:57:49 +02:00

* add bundle model and query logic * cleanup tests * add basic form * add success message * Add form tests * Add bundle list view * fix edit view * Add remove button * Add basic preview logic * Make pagination use absolute URLs * Hide bookmark edits when rendering preview * Render bookmark list in preview * Reorder bundles * Show bundles in bookmark view * Make bookmark search respect selected bundle * UI tweaks * Fix bookmark scope * Improve bundle preview * Skip preview if form is submitted * Show correct preview after invalid form submission * Add option to hide bundles * Merge new migrations * Add tests for bundle menu * Improve check for preview being removed
78 lines
3.0 KiB
Python
78 lines
3.0 KiB
Python
from django.test import TestCase
|
|
from django.urls import reverse
|
|
|
|
from bookmarks.models import BookmarkBundle
|
|
from bookmarks.tests.helpers import BookmarkFactoryMixin
|
|
|
|
|
|
class BundleNewViewTestCase(TestCase, BookmarkFactoryMixin):
|
|
|
|
def setUp(self) -> None:
|
|
user = self.get_or_create_test_user()
|
|
self.client.force_login(user)
|
|
|
|
def create_form_data(self, overrides=None):
|
|
if overrides is None:
|
|
overrides = {}
|
|
form_data = {
|
|
"name": "Test Bundle",
|
|
"search": "test search",
|
|
"any_tags": "tag1 tag2",
|
|
"all_tags": "required-tag",
|
|
"excluded_tags": "excluded-tag",
|
|
}
|
|
return {**form_data, **overrides}
|
|
|
|
def test_should_create_new_bundle(self):
|
|
form_data = self.create_form_data()
|
|
|
|
response = self.client.post(reverse("linkding:bundles.new"), form_data)
|
|
|
|
self.assertEqual(BookmarkBundle.objects.count(), 1)
|
|
|
|
bundle = BookmarkBundle.objects.first()
|
|
self.assertEqual(bundle.owner, self.user)
|
|
self.assertEqual(bundle.name, form_data["name"])
|
|
self.assertEqual(bundle.search, form_data["search"])
|
|
self.assertEqual(bundle.any_tags, form_data["any_tags"])
|
|
self.assertEqual(bundle.all_tags, form_data["all_tags"])
|
|
self.assertEqual(bundle.excluded_tags, form_data["excluded_tags"])
|
|
|
|
self.assertRedirects(response, reverse("linkding:bundles.index"))
|
|
|
|
def test_should_increment_order_for_subsequent_bundles(self):
|
|
# Create first bundle
|
|
form_data_1 = self.create_form_data({"name": "Bundle 1"})
|
|
self.client.post(reverse("linkding:bundles.new"), form_data_1)
|
|
bundle1 = BookmarkBundle.objects.get(name="Bundle 1")
|
|
self.assertEqual(bundle1.order, 0)
|
|
|
|
# Create second bundle
|
|
form_data_2 = self.create_form_data({"name": "Bundle 2"})
|
|
self.client.post(reverse("linkding:bundles.new"), form_data_2)
|
|
bundle2 = BookmarkBundle.objects.get(name="Bundle 2")
|
|
self.assertEqual(bundle2.order, 1)
|
|
|
|
# Create another bundle with a higher order
|
|
self.setup_bundle(order=5)
|
|
|
|
# Create third bundle
|
|
form_data_3 = self.create_form_data({"name": "Bundle 3"})
|
|
self.client.post(reverse("linkding:bundles.new"), form_data_3)
|
|
bundle3 = BookmarkBundle.objects.get(name="Bundle 3")
|
|
self.assertEqual(bundle3.order, 6)
|
|
|
|
def test_incrementing_order_ignores_other_user_bookmark(self):
|
|
other_user = self.setup_user()
|
|
self.setup_bundle(user=other_user, order=10)
|
|
|
|
form_data = self.create_form_data({"name": "Bundle 1"})
|
|
self.client.post(reverse("linkding:bundles.new"), form_data)
|
|
bundle1 = BookmarkBundle.objects.get(name="Bundle 1")
|
|
self.assertEqual(bundle1.order, 0)
|
|
|
|
def test_should_return_422_with_invalid_form(self):
|
|
form_data = self.create_form_data({"name": ""})
|
|
response = self.client.post(reverse("linkding:bundles.new"), form_data)
|
|
self.assertEqual(response.status_code, 422)
|