2021-12-22 09:51:31 -05:00
|
|
|
from django.contrib.auth.models import User
|
2022-01-10 14:03:07 -05:00
|
|
|
from django.test import override_settings
|
|
|
|
from django.test.client import RequestFactory
|
|
|
|
from django.urls import reverse
|
2021-12-22 09:51:31 -05:00
|
|
|
|
2022-01-10 14:03:07 -05:00
|
|
|
from dcim.models import Site
|
|
|
|
from dcim.tables import SiteTable
|
2021-12-22 09:51:31 -05:00
|
|
|
from users.preferences import UserPreference
|
2022-01-27 15:00:10 -05:00
|
|
|
from netbox.tables import configure_table
|
2022-01-10 14:03:07 -05:00
|
|
|
from utilities.testing import TestCase
|
2021-12-22 09:51:31 -05:00
|
|
|
|
|
|
|
|
|
|
|
DEFAULT_USER_PREFERENCES = {
|
|
|
|
'pagination': {
|
|
|
|
'per_page': 250,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
class UserPreferencesTest(TestCase):
|
2022-01-10 14:03:07 -05:00
|
|
|
user_permissions = ['dcim.view_site']
|
2021-12-22 09:51:31 -05:00
|
|
|
|
|
|
|
def test_userpreference(self):
|
|
|
|
CHOICES = (
|
|
|
|
('foo', 'Foo'),
|
|
|
|
('bar', 'Bar'),
|
|
|
|
)
|
|
|
|
kwargs = {
|
|
|
|
'label': 'Test Preference',
|
|
|
|
'choices': CHOICES,
|
|
|
|
'default': CHOICES[0][0],
|
|
|
|
'description': 'Description',
|
|
|
|
}
|
|
|
|
userpref = UserPreference(**kwargs)
|
|
|
|
|
|
|
|
self.assertEqual(userpref.label, kwargs['label'])
|
|
|
|
self.assertEqual(userpref.choices, kwargs['choices'])
|
|
|
|
self.assertEqual(userpref.default, kwargs['default'])
|
|
|
|
self.assertEqual(userpref.description, kwargs['description'])
|
|
|
|
|
|
|
|
@override_settings(DEFAULT_USER_PREFERENCES=DEFAULT_USER_PREFERENCES)
|
|
|
|
def test_default_preferences(self):
|
|
|
|
user = User.objects.create(username='User 1')
|
|
|
|
userconfig = user.config
|
|
|
|
|
|
|
|
self.assertEqual(userconfig.data, DEFAULT_USER_PREFERENCES)
|
2022-01-10 14:03:07 -05:00
|
|
|
|
|
|
|
def test_table_ordering(self):
|
|
|
|
url = reverse('dcim:site_list')
|
|
|
|
response = self.client.get(f"{url}?sort=status")
|
|
|
|
self.assertEqual(response.status_code, 200)
|
|
|
|
|
|
|
|
# Check that table ordering preference has been recorded
|
|
|
|
self.user.refresh_from_db()
|
|
|
|
ordering = self.user.config.get(f'tables.SiteTable.ordering')
|
|
|
|
self.assertEqual(ordering, ['status'])
|
|
|
|
|
|
|
|
# Check that a recorded preference is honored by default
|
|
|
|
self.user.config.set(f'tables.SiteTable.ordering', ['-status'], commit=True)
|
|
|
|
table = SiteTable(Site.objects.all())
|
|
|
|
request = RequestFactory().get(url)
|
|
|
|
request.user = self.user
|
|
|
|
configure_table(table, request)
|
|
|
|
self.assertEqual(table.order_by, ('-status',))
|