mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-26 10:49:07 +02:00
* Initial work on #8248 * Add tests * Fix tests * Add feature query for bookmarks * Add BookmarksWidget * Correct generic relation name * Add docs for bookmarks * Remove inheritance from ChangeLoggedModel
This commit is contained in:
@@ -268,6 +268,58 @@ class SavedFilterTest(APIViewTestCases.APIViewTestCase):
|
||||
savedfilter.content_types.set([site_ct])
|
||||
|
||||
|
||||
class BookmarkTest(
|
||||
APIViewTestCases.GetObjectViewTestCase,
|
||||
APIViewTestCases.ListObjectsViewTestCase,
|
||||
APIViewTestCases.CreateObjectViewTestCase,
|
||||
APIViewTestCases.DeleteObjectViewTestCase
|
||||
):
|
||||
model = Bookmark
|
||||
brief_fields = ['display', 'id', 'object_id', 'object_type', 'url']
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
sites = (
|
||||
Site(name='Site 1', slug='site-1'),
|
||||
Site(name='Site 2', slug='site-2'),
|
||||
Site(name='Site 3', slug='site-3'),
|
||||
Site(name='Site 4', slug='site-4'),
|
||||
Site(name='Site 5', slug='site-5'),
|
||||
Site(name='Site 6', slug='site-6'),
|
||||
)
|
||||
Site.objects.bulk_create(sites)
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
sites = Site.objects.all()
|
||||
|
||||
bookmarks = (
|
||||
Bookmark(object=sites[0], user=self.user),
|
||||
Bookmark(object=sites[1], user=self.user),
|
||||
Bookmark(object=sites[2], user=self.user),
|
||||
)
|
||||
Bookmark.objects.bulk_create(bookmarks)
|
||||
|
||||
self.create_data = [
|
||||
{
|
||||
'object_type': 'dcim.site',
|
||||
'object_id': sites[3].pk,
|
||||
'user': self.user.pk,
|
||||
},
|
||||
{
|
||||
'object_type': 'dcim.site',
|
||||
'object_id': sites[4].pk,
|
||||
'user': self.user.pk,
|
||||
},
|
||||
{
|
||||
'object_type': 'dcim.site',
|
||||
'object_id': sites[5].pk,
|
||||
'user': self.user.pk,
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
class ExportTemplateTest(APIViewTestCases.APIViewTestCase):
|
||||
model = ExportTemplate
|
||||
brief_fields = ['display', 'id', 'name', 'url']
|
||||
|
||||
@@ -365,6 +365,77 @@ class SavedFilterTestCase(TestCase, BaseFilterSetTests):
|
||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 1)
|
||||
|
||||
|
||||
class BookmarkTestCase(TestCase, BaseFilterSetTests):
|
||||
queryset = Bookmark.objects.all()
|
||||
filterset = BookmarkFilterSet
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
content_types = ContentType.objects.filter(model__in=['site', 'rack', 'device'])
|
||||
|
||||
users = (
|
||||
User(username='User 1'),
|
||||
User(username='User 2'),
|
||||
User(username='User 3'),
|
||||
)
|
||||
User.objects.bulk_create(users)
|
||||
|
||||
sites = (
|
||||
Site(name='Site 1', slug='site-1'),
|
||||
Site(name='Site 2', slug='site-2'),
|
||||
Site(name='Site 3', slug='site-3'),
|
||||
)
|
||||
Site.objects.bulk_create(sites)
|
||||
|
||||
tenants = (
|
||||
Tenant(name='Tenant 1', slug='tenant-1'),
|
||||
Tenant(name='Tenant 2', slug='tenant-2'),
|
||||
Tenant(name='Tenant 3', slug='tenant-3'),
|
||||
)
|
||||
Tenant.objects.bulk_create(tenants)
|
||||
|
||||
bookmarks = (
|
||||
Bookmark(
|
||||
object=sites[0],
|
||||
user=users[0],
|
||||
),
|
||||
Bookmark(
|
||||
object=sites[1],
|
||||
user=users[1],
|
||||
),
|
||||
Bookmark(
|
||||
object=sites[2],
|
||||
user=users[2],
|
||||
),
|
||||
Bookmark(
|
||||
object=tenants[0],
|
||||
user=users[0],
|
||||
),
|
||||
Bookmark(
|
||||
object=tenants[1],
|
||||
user=users[1],
|
||||
),
|
||||
Bookmark(
|
||||
object=tenants[2],
|
||||
user=users[2],
|
||||
),
|
||||
)
|
||||
Bookmark.objects.bulk_create(bookmarks)
|
||||
|
||||
def test_object_type(self):
|
||||
params = {'object_type': 'dcim.site'}
|
||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
|
||||
params = {'object_type_id': [ContentType.objects.get_for_model(Site).pk]}
|
||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
|
||||
|
||||
def test_user(self):
|
||||
users = User.objects.filter(username__startswith='User')
|
||||
params = {'user': [users[0].username, users[1].username]}
|
||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
||||
params = {'user_id': [users[0].pk, users[1].pk]}
|
||||
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
|
||||
|
||||
|
||||
class ExportTemplateTestCase(TestCase, BaseFilterSetTests):
|
||||
queryset = ExportTemplate.objects.all()
|
||||
filterset = ExportTemplateFilterSet
|
||||
|
||||
@@ -181,6 +181,54 @@ class SavedFilterTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||
}
|
||||
|
||||
|
||||
class BookmarkTestCase(
|
||||
ViewTestCases.DeleteObjectViewTestCase,
|
||||
ViewTestCases.ListObjectsViewTestCase,
|
||||
ViewTestCases.BulkDeleteObjectsViewTestCase
|
||||
):
|
||||
model = Bookmark
|
||||
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
site_ct = ContentType.objects.get_for_model(Site)
|
||||
sites = (
|
||||
Site(name='Site 1', slug='site-1'),
|
||||
Site(name='Site 2', slug='site-2'),
|
||||
Site(name='Site 3', slug='site-3'),
|
||||
Site(name='Site 4', slug='site-4'),
|
||||
)
|
||||
Site.objects.bulk_create(sites)
|
||||
|
||||
cls.form_data = {
|
||||
'object_type': site_ct.pk,
|
||||
'object_id': sites[3].pk,
|
||||
}
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
sites = Site.objects.all()
|
||||
user = self.user
|
||||
|
||||
bookmarks = (
|
||||
Bookmark(object=sites[0], user=user),
|
||||
Bookmark(object=sites[1], user=user),
|
||||
Bookmark(object=sites[2], user=user),
|
||||
)
|
||||
Bookmark.objects.bulk_create(bookmarks)
|
||||
|
||||
def _get_url(self, action, instance=None):
|
||||
if action == 'list':
|
||||
return reverse('users:bookmarks')
|
||||
return super()._get_url(action, instance)
|
||||
|
||||
def test_list_objects_anonymous(self):
|
||||
return
|
||||
|
||||
def test_list_objects_with_constrained_permission(self):
|
||||
return
|
||||
|
||||
|
||||
class ExportTemplateTestCase(ViewTestCases.PrimaryObjectViewTestCase):
|
||||
model = ExportTemplate
|
||||
|
||||
|
||||
Reference in New Issue
Block a user