Jet fork des offiziellen jet-admin projekts. Geupdated für Django4.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

230 lignes
8.7KB

  1. import json
  2. from django.contrib.auth.models import User
  3. try:
  4. from django.core.urlresolvers import reverse
  5. except ImportError: # Django 1.11
  6. from django.urls import reverse
  7. from django.test import TestCase, Client
  8. from jet.dashboard.modules import LinkList
  9. from jet.models import Bookmark
  10. from jet.dashboard.models import UserDashboardModule
  11. class ViewsTestCase(TestCase):
  12. def setUp(self):
  13. self.assertTrue(self._login())
  14. def _login(self):
  15. username = 'admin'
  16. email = 'admin@example.com'
  17. password = 'admin'
  18. self.admin = Client()
  19. self.admin_user = User.objects.create_superuser(username, email, password)
  20. return self.admin.login(username=username, password=password)
  21. def test_module_update_view(self):
  22. title = 'Quick links Test'
  23. new_title = title + '2'
  24. new_layout = 'stacked'
  25. module = UserDashboardModule.objects.create(
  26. title=title,
  27. module='jet.dashboard.modules.LinkList',
  28. app_label=None,
  29. user=self.admin_user.pk,
  30. column=0,
  31. order=0,
  32. settings='{"layout": "inline"}',
  33. children='[]'
  34. )
  35. response = self.admin.get(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))
  36. self.assertEqual(response.status_code, 200)
  37. self.assertTrue(response.context['module'] is not None)
  38. self.assertTrue(isinstance(response.context['module'], LinkList))
  39. self.assertEqual(response.context['module'].title, title)
  40. post = {
  41. 'title': new_title,
  42. 'layout': new_layout,
  43. 'children-TOTAL_FORMS': '2',
  44. 'children-INITIAL_FORMS': '1',
  45. 'children-MIN_NUM_FORMS': '0',
  46. 'children-MAX_NUM_FORMS': '1000',
  47. 'children-0-url': 'http://docs.djangoproject.com/',
  48. 'children-0-title': 'Django documentation',
  49. 'children-0-external': 'on',
  50. 'children-1-url': '',
  51. 'children-1-title': '',
  52. 'children-__prefix__-url': '',
  53. 'children-__prefix__-title': '',
  54. '_save': 'Save'
  55. }
  56. self.admin.post(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}), post)
  57. self.assertEqual(response.status_code, 200)
  58. module = UserDashboardModule.objects.get(pk=module.pk)
  59. settings = json.loads(module.settings)
  60. self.assertEqual(module.title, new_title)
  61. self.assertEqual(settings['layout'], new_layout)
  62. module.delete()
  63. def test_add_bookmark_view(self):
  64. url = 'http://test.com/'
  65. title = 'Title'
  66. response = self.admin.post(reverse('jet:add_bookmark'), {'url': url, 'title': title})
  67. self.assertEqual(response.status_code, 200)
  68. response = json.loads(response.content.decode())
  69. self.assertFalse(response['error'])
  70. self.assertNotEqual(response['id'], None)
  71. bookmark = Bookmark.objects.get(pk=response['id'])
  72. self.assertNotEqual(bookmark, None)
  73. self.assertEqual(bookmark.title, title)
  74. self.assertEqual(bookmark.url, url)
  75. def test_add_bookmark_view_unauthorized(self):
  76. url = 'http://test.com/'
  77. title = 'Title'
  78. response = self.client.post(reverse('jet:add_bookmark'), {'url': url, 'title': title})
  79. self.assertEqual(response.status_code, 200)
  80. response = json.loads(response.content.decode())
  81. self.assertTrue(response['error'])
  82. def test_remove_bookmark_view(self):
  83. url = 'http://test.com/'
  84. title = 'Title'
  85. bookmark = Bookmark.objects.create(url=url, title=title, user=self.admin_user.pk)
  86. response = self.admin.post(reverse('jet:remove_bookmark'), {'id': bookmark.id})
  87. self.assertEqual(response.status_code, 200)
  88. response = json.loads(response.content.decode())
  89. self.assertFalse(response['error'])
  90. self.assertFalse(Bookmark.objects.filter(pk=bookmark.pk).exists())
  91. def test_toggle_application_pin_view(self):
  92. app_label = 'test_app'
  93. response = self.admin.post(reverse('jet:toggle_application_pin'), {'app_label': app_label})
  94. self.assertEqual(response.status_code, 200)
  95. response = json.loads(response.content.decode())
  96. self.assertFalse(response['error'])
  97. self.assertTrue(response['pinned'])
  98. response = self.admin.post(reverse('jet:toggle_application_pin'), {'app_label': app_label})
  99. self.assertEqual(response.status_code, 200)
  100. response = json.loads(response.content.decode())
  101. self.assertFalse(response['error'])
  102. self.assertFalse(response['pinned'])
  103. def test_update_dashboard_modules_view(self):
  104. app_label = None
  105. module_0 = UserDashboardModule.objects.create(
  106. title='',
  107. module='jet.dashboard.modules.LinkList',
  108. app_label=app_label,
  109. user=self.admin_user.pk,
  110. column=0,
  111. order=0
  112. )
  113. module_1 = UserDashboardModule.objects.create(
  114. title='',
  115. module='jet.dashboard.modules.LinkList',
  116. app_label=app_label,
  117. user=self.admin_user.pk,
  118. column=0,
  119. order=1
  120. )
  121. response = self.admin.post(reverse('jet-dashboard:update_dashboard_modules'), {
  122. 'app_label': '',
  123. 'modules': json.dumps([
  124. {'id': module_0.pk, 'column': 0, 'order': 1},
  125. {'id': module_1.pk, 'column': 0, 'order': 0}
  126. ])
  127. })
  128. self.assertEqual(response.status_code, 200)
  129. response = json.loads(response.content.decode())
  130. self.assertFalse(response['error'])
  131. module_0 = UserDashboardModule.objects.get(pk=module_0.pk)
  132. module_1 = UserDashboardModule.objects.get(pk=module_1.pk)
  133. self.assertEqual(module_0.order, 1)
  134. self.assertEqual(module_1.order, 0)
  135. module_0.delete()
  136. module_1.delete()
  137. def test_add_user_dashboard_module_view(self):
  138. response = self.admin.post(reverse('jet-dashboard:add_user_dashboard_module'), {
  139. 'app_label': '',
  140. 'type': 'available_children',
  141. 'module': 0
  142. })
  143. self.assertEqual(response.status_code, 200)
  144. response = json.loads(response.content.decode())
  145. self.assertFalse(response['error'])
  146. self.assertNotEqual(response['id'], None)
  147. module = UserDashboardModule.objects.get(pk=response['id'])
  148. self.assertNotEqual(module, None)
  149. def test_add_user_app_dashboard_module_view(self):
  150. app_label = 'auth'
  151. response = self.admin.post(reverse('jet-dashboard:add_user_dashboard_module'), {
  152. 'app_label': app_label,
  153. 'type': 'available_children',
  154. 'module': 0
  155. })
  156. self.assertEqual(response.status_code, 200)
  157. response = json.loads(response.content.decode())
  158. self.assertFalse(response['error'])
  159. self.assertNotEqual(response['id'], None)
  160. module = UserDashboardModule.objects.get(pk=response['id'])
  161. self.assertNotEqual(module, None)
  162. self.assertEqual(module.app_label, app_label)
  163. def test_update_dashboard_module_collapse_view(self):
  164. module = UserDashboardModule.objects.create(
  165. title='',
  166. module='jet.dashboard.modules.LinkList',
  167. app_label=None,
  168. user=self.admin_user.pk,
  169. column=0,
  170. order=0
  171. )
  172. response = self.admin.post(reverse('jet-dashboard:update_dashboard_module_collapse'), {
  173. 'id': module.pk, 'collapsed': True
  174. })
  175. self.assertEqual(response.status_code, 200)
  176. response = json.loads(response.content.decode())
  177. self.assertFalse(response['error'])
  178. self.assertTrue(response['collapsed'])
  179. module = UserDashboardModule.objects.get(pk=module.pk)
  180. response = self.admin.post(reverse('jet-dashboard:update_dashboard_module_collapse'), {
  181. 'id': module.pk, 'collapsed': False
  182. })
  183. self.assertEqual(response.status_code, 200)
  184. response = json.loads(response.content.decode())
  185. self.assertFalse(response['error'])
  186. self.assertFalse(response['collapsed'])
  187. module.delete()
  188. def test_remove_dashboard_module_view(self):
  189. module = UserDashboardModule.objects.create(
  190. title='',
  191. module='jet.dashboard.modules.LinkList',
  192. app_label=None,
  193. user=self.admin_user.pk,
  194. column=0,
  195. order=0
  196. )
  197. response = self.admin.post(reverse('jet-dashboard:remove_dashboard_module'), {'id': module.pk})
  198. self.assertEqual(response.status_code, 200)
  199. response = json.loads(response.content.decode())
  200. self.assertFalse(response['error'])
  201. self.assertFalse(UserDashboardModule.objects.filter(pk=module.pk).exists())