| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- from django.contrib.auth.models import User
- from django.test import override_settings
- from django.test.client import RequestFactory
- from django.urls import reverse
- from dcim.models import Site
- from dcim.tables import SiteTable
- from users.preferences import UserPreference
- from netbox.tables import configure_table
- from utilities.testing import TestCase
- DEFAULT_USER_PREFERENCES = {
- 'pagination': {
- 'per_page': 250,
- }
- }
- class UserPreferencesTest(TestCase):
- user_permissions = ['dcim.view_site']
- 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)
- 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',))
|