| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | from django.test import TestCase
from django.urls import reverse
from django.urls.exceptions import NoReverseMatch
from oscar.apps.dashboard.menu import get_nodes
from oscar.apps.dashboard.nav import default_access_fn
from oscar.test.factories import UserFactory
class DashboardAccessFunctionTestCase(TestCase):
    def setUp(self):
        self.staff_user = UserFactory(is_staff=True)
        self.non_staff_user = UserFactory()
    def test_default_access_fn_no_url_name(self):
        self.assertTrue(default_access_fn(self.staff_user, None))
    def test_default_access_fn_staff(self):
        self.assertTrue(default_access_fn(self.staff_user, 'dashboard:index'))
    def test_default_access_fn_non_staff_user(self):
        self.assertFalse(default_access_fn(self.non_staff_user, 'dashboard:index'))
    def test_default_access_fn_invalid_url_name(self):
        with self.assertRaises(NoReverseMatch):
            default_access_fn(self.staff_user, 'invalid_module:index')
    def test_default_access_non_dashboard_url_name(self):
        assert reverse('search:search')
        with self.assertRaises(KeyError):
            default_access_fn(self.staff_user, 'search:search')
class DashboardNavTestCase(TestCase):
    def test_staff_user_has_menu(self):
        menu = get_nodes(UserFactory(is_staff=True))
        self.assertTrue(menu)
    def test_non_staff_user_has_empty_menu(self):
        menu = get_nodes(UserFactory())
        self.assertEqual(menu, [])
 |