Jet fork des offiziellen jet-admin projekts. Geupdated für Django4.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

230 рядки
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())