test_adminsite.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. from __future__ import unicode_literals
  2. import datetime
  3. from django.conf.urls import url
  4. from django.contrib import admin
  5. from django.contrib.auth.models import User
  6. from django.core.urlresolvers import reverse
  7. from django.test import TestCase, override_settings
  8. from django.test.client import RequestFactory
  9. from .models import Article
  10. site = admin.AdminSite(name="test_adminsite")
  11. site.register(User)
  12. site.register(Article)
  13. urlpatterns = [
  14. url(r'^test_admin/admin/', site.urls),
  15. ]
  16. @override_settings(
  17. PASSWORD_HASHERS=['django.contrib.auth.hashers.SHA1PasswordHasher'],
  18. ROOT_URLCONF="admin_views.test_adminsite",
  19. )
  20. class SiteEachContextTest(TestCase):
  21. """
  22. Check each_context contains the documented variables and that available_apps context
  23. variable structure is the expected one.
  24. """
  25. @classmethod
  26. def setUpTestData(cls):
  27. cls.u1 = User.objects.create(
  28. id=100, password='sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158',
  29. last_login=datetime.datetime(2007, 5, 30, 13, 20, 10), is_superuser=True, username='super',
  30. first_name='Super', last_name='User', email='super@example.com',
  31. is_staff=True, is_active=True, date_joined=datetime.datetime(2007, 5, 30, 13, 20, 10),
  32. )
  33. def setUp(self):
  34. factory = RequestFactory()
  35. request = factory.get(reverse('test_adminsite:index'))
  36. request.user = self.u1
  37. self.ctx = site.each_context(request)
  38. def test_each_context(self):
  39. ctx = self.ctx
  40. self.assertEqual(ctx['site_header'], 'Django administration')
  41. self.assertEqual(ctx['site_title'], 'Django site admin')
  42. self.assertEqual(ctx['site_url'], '/')
  43. self.assertEqual(ctx['has_permission'], True)
  44. def test_available_apps(self):
  45. ctx = self.ctx
  46. apps = ctx['available_apps']
  47. # we have registered two models from two different apps
  48. self.assertEqual(len(apps), 2)
  49. # admin_views.Article
  50. admin_views = apps[0]
  51. self.assertEqual(admin_views['app_label'], 'admin_views')
  52. self.assertEqual(len(admin_views['models']), 1)
  53. self.assertEqual(admin_views['models'][0]['object_name'], 'Article')
  54. # auth.User
  55. auth = apps[1]
  56. self.assertEqual(auth['app_label'], 'auth')
  57. self.assertEqual(len(auth['models']), 1)
  58. user = auth['models'][0]
  59. self.assertEqual(user['object_name'], 'User')
  60. self.assertEqual(auth['app_url'], '/test_admin/admin/auth/')
  61. self.assertEqual(auth['has_module_perms'], True)
  62. self.assertIn('perms', user)
  63. self.assertEqual(user['perms']['add'], True)
  64. self.assertEqual(user['perms']['change'], True)
  65. self.assertEqual(user['perms']['delete'], True)
  66. self.assertEqual(user['admin_url'], '/test_admin/admin/auth/user/')
  67. self.assertEqual(user['add_url'], '/test_admin/admin/auth/user/add/')
  68. self.assertEqual(user['name'], 'Users')