from django.contrib.auth.models import User from django.core.urlresolvers import reverse from django.test import TestCase, Client from jet.dashboard.dashboard import Dashboard from jet.dashboard.modules import LinkList, RecentActions from jet.dashboard.models import UserDashboardModule from jet.tests.dashboard import TestIndexDashboard class DashboardTestCase(TestCase): class Request: def __init__(self, user): self.user = user def setUp(self): self._login() self._init_dashboard() def _login(self): username = 'admin' email = 'admin@example.com' password = 'admin' self.admin = Client() self.admin_user = User.objects.create_superuser(username, email, password) return self.admin.login(username=username, password=password) def _init_dashboard(self): UserDashboardModule.objects.create( title='', module='jet.dashboard.modules.LinkList', app_label=None, user=self.admin_user.pk, column=0, order=0 ) UserDashboardModule.objects.create( title='', module='jet.dashboard.modules.RecentActions', app_label=None, user=self.admin_user.pk, column=0, order=1 ) self.dashboard = TestIndexDashboard({'request': self.Request(self.admin_user)}) def test_custom_columns(self): self.assertEqual(self.dashboard.columns, 3) def test_init_with_context_called(self): self.assertTrue(self.dashboard.init_with_context_called) def test_load_modules(self): self.assertEqual(len(self.dashboard.modules), 2) self.assertTrue(isinstance(self.dashboard.modules[0], LinkList)) self.assertTrue(isinstance(self.dashboard.modules[1], RecentActions)) def test_media(self): media = self.dashboard.media() self.assertEqual(len(media.js), 2) self.assertEqual(media.js[0], 'file.js') self.assertEqual(media.js[1], 'file2.js') self.assertEqual(len(media.css), 2) self.assertEqual(media.css[0], 'file.css') self.assertEqual(media.css[1], 'file2.css') def test_index_dashboard_view(self): response = self.admin.get(reverse('admin:index')) self.assertEqual(response.status_code, 200) self.assertTrue('dashboard' in response.context) dashboard = response.context['dashboard'] self.assertIsInstance(dashboard, Dashboard) self.assertIsNone(dashboard.app_label) def test_app_index_dashboard_view(self): app_label = 'tests' response = self.admin.get(reverse('admin:app_list', args=(app_label,))) self.assertEqual(response.status_code, 200) self.assertTrue('dashboard' in response.context) dashboard = response.context['dashboard'] self.assertIsInstance(dashboard, Dashboard) self.assertEqual(dashboard.app_label, app_label)