test_preferences.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from django.test import override_settings
  2. from django.test.client import RequestFactory
  3. from django.urls import reverse
  4. from dcim.models import Site
  5. from dcim.tables import SiteTable
  6. from users.models import User
  7. from users.preferences import UserPreference
  8. from utilities.testing import TestCase
  9. DEFAULT_USER_PREFERENCES = {
  10. 'pagination': {
  11. 'per_page': 250,
  12. }
  13. }
  14. class UserPreferencesTest(TestCase):
  15. user_permissions = ['dcim.view_site']
  16. def test_userpreference(self):
  17. CHOICES = (
  18. ('foo', 'Foo'),
  19. ('bar', 'Bar'),
  20. )
  21. kwargs = {
  22. 'label': 'Test Preference',
  23. 'choices': CHOICES,
  24. 'default': CHOICES[0][0],
  25. 'description': 'Description',
  26. }
  27. userpref = UserPreference(**kwargs)
  28. self.assertEqual(userpref.label, kwargs['label'])
  29. self.assertEqual(userpref.choices, kwargs['choices'])
  30. self.assertEqual(userpref.default, kwargs['default'])
  31. self.assertEqual(userpref.description, kwargs['description'])
  32. @override_settings(DEFAULT_USER_PREFERENCES=DEFAULT_USER_PREFERENCES)
  33. def test_default_preferences(self):
  34. user = User.objects.create(username='User 1')
  35. userconfig = user.config
  36. self.assertEqual(userconfig.data, DEFAULT_USER_PREFERENCES)
  37. def test_table_ordering(self):
  38. url = reverse('dcim:site_list')
  39. response = self.client.get(f"{url}?sort=status")
  40. self.assertEqual(response.status_code, 200)
  41. # Check that table ordering preference has been recorded
  42. self.user.refresh_from_db()
  43. ordering = self.user.config.get('tables.SiteTable.ordering')
  44. self.assertEqual(ordering, ['status'])
  45. # Check that a recorded preference is honored by default
  46. self.user.config.set('tables.SiteTable.ordering', ['-status'], commit=True)
  47. table = SiteTable(Site.objects.all())
  48. request = RequestFactory().get(url)
  49. request.user = self.user
  50. table.configure(request)
  51. self.assertEqual(table.order_by, ('-status',))