You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_application.py 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from unittest import mock
  2. from django.apps import apps
  3. from django.test import TestCase
  4. from django.test.utils import modify_settings
  5. from django.urls import path
  6. from django.views.generic import View
  7. @modify_settings(INSTALLED_APPS={
  8. 'append': 'tests._site.apps.myapp.apps.TestConfig',
  9. })
  10. class OscarConfigTestCase(TestCase):
  11. def setUp(self):
  12. self.myapp = apps.get_app_config('myapp')
  13. def test_get_permissions_required_uses_map(self):
  14. perms = self.myapp.get_permissions('index')
  15. self.assertEqual(perms, 'is_staff')
  16. def test_permissions_required_falls_back_to_default(self):
  17. perms = self.myapp.get_permissions('notinmap')
  18. self.assertEqual(perms, 'is_superuser')
  19. @mock.patch('oscar.views.decorators.permissions_required')
  20. def test_get_url_decorator_fetches_correct_perms(self, mock_permissions_required):
  21. pattern = path('', View.as_view(), name='index')
  22. self.myapp.get_url_decorator(pattern)
  23. mock_permissions_required.assert_called_once_with('is_staff', login_url=None)
  24. def test_post_process_urls_adds_decorator(self):
  25. def fake_callback():
  26. pass
  27. fake_decorator = mock.Mock()
  28. fake_decorator.return_value = fake_callback
  29. self.myapp.get_url_decorator = mock.Mock()
  30. self.myapp.get_url_decorator.return_value = fake_decorator
  31. pattern = path('', View.as_view(), name='index')
  32. processed_patterns = self.myapp.post_process_urls([pattern])
  33. self.myapp.get_url_decorator.assert_called_once_with(pattern)
  34. self.assertEqual(processed_patterns[0].callback, fake_callback)