選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

test_nav.py 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from django.test import TestCase
  2. from django.urls import reverse
  3. from django.urls.exceptions import NoReverseMatch
  4. from oscar.apps.dashboard.menu import get_nodes
  5. from oscar.apps.dashboard.nav import default_access_fn
  6. from oscar.test.factories import UserFactory
  7. class DashboardAccessFunctionTestCase(TestCase):
  8. def setUp(self):
  9. self.staff_user = UserFactory(is_staff=True)
  10. self.non_staff_user = UserFactory()
  11. def test_default_access_fn_no_url_name(self):
  12. self.assertTrue(default_access_fn(self.staff_user, None))
  13. def test_default_access_fn_staff(self):
  14. self.assertTrue(default_access_fn(self.staff_user, "dashboard:index"))
  15. def test_default_access_fn_non_staff_user(self):
  16. self.assertFalse(default_access_fn(self.non_staff_user, "dashboard:index"))
  17. def test_default_access_fn_invalid_url_name(self):
  18. with self.assertRaises(NoReverseMatch):
  19. default_access_fn(self.staff_user, "invalid_module:index")
  20. def test_default_access_non_dashboard_url_name(self):
  21. assert reverse("search:search")
  22. with self.assertRaises(KeyError):
  23. default_access_fn(self.staff_user, "search:search")
  24. class DashboardNavTestCase(TestCase):
  25. def test_staff_user_has_menu(self):
  26. menu = get_nodes(UserFactory(is_staff=True))
  27. self.assertTrue(menu)
  28. def test_non_staff_user_has_empty_menu(self):
  29. menu = get_nodes(UserFactory())
  30. self.assertEqual(menu, [])