forked from assem-ch/django-jet-reboot
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
405 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
from jet import modules | ||
from jet.dashboard import Dashboard | ||
|
||
|
||
class TestIndexDashboard(Dashboard): | ||
columns = 3 | ||
init_with_context_called = False | ||
|
||
class Media: | ||
js = ('file.js', 'file2.js') | ||
css = ('file.css', 'file2.css') | ||
|
||
def init_with_context(self, context): | ||
self.init_with_context_called = True | ||
self.available_children.append(modules.LinkList) | ||
self.available_children.append(modules.Feed) | ||
|
||
# append a recent actions module | ||
self.children.append(modules.RecentActions( | ||
'Recent Actions', | ||
10, | ||
column=0, | ||
order=1 | ||
)) | ||
|
||
# append a feed module | ||
self.children.append(modules.Feed( | ||
'Latest Django News', | ||
feed_url='http://www.djangoproject.com/rss/weblog/', | ||
limit=5, | ||
column=1, | ||
order=1 | ||
)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
from django.db import models | ||
from django.utils.encoding import python_2_unicode_compatible | ||
|
||
|
||
@python_2_unicode_compatible | ||
class TestModel(models.Model): | ||
field1 = models.CharField(max_length=255) | ||
field2 = models.IntegerField() | ||
|
||
def __str__(self): | ||
return '%s%d' % (self.field1, self.field2) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
from django.conf import global_settings | ||
|
||
SECRET_KEY = '!DJANGO_JET_TESTS!' | ||
|
||
DEBUG = True | ||
TEMPLATE_DEBUG = DEBUG | ||
DEBUG_PROPAGATE_EXCEPTIONS = True | ||
|
||
ROOT_URLCONF = 'jet.tests.urls' | ||
|
||
INSTALLED_APPS = ( | ||
'jet', | ||
'django.contrib.auth', | ||
'django.contrib.contenttypes', | ||
'django.contrib.sessions', | ||
'django.contrib.sites', | ||
'django.contrib.messages', | ||
'django.contrib.admin', | ||
'jet.tests', | ||
) | ||
|
||
TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + ( | ||
'django.core.context_processors.request', | ||
) | ||
|
||
DATABASES = { | ||
'default': { | ||
'ENGINE': 'django.db.backends.sqlite3', | ||
} | ||
} | ||
|
||
TIME_ZONE = 'UTC' | ||
LANGUAGE_CODE = 'en-US' | ||
USE_I18N = True | ||
USE_L10N = True | ||
|
||
MEDIA_ROOT = '' | ||
MEDIA_URL = '' | ||
|
||
STATIC_URL = '/static/' | ||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
from django.contrib.auth.models import User | ||
from django.test import TestCase, Client | ||
from jet.modules import LinkList, RecentActions | ||
from jet.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 = '[email protected]' | ||
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.modules.LinkList', | ||
app_label=None, | ||
user=self.admin_user.pk, | ||
column=0, | ||
order=0 | ||
) | ||
UserDashboardModule.objects.create( | ||
title='', | ||
module='jet.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') | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
from django.test import TestCase | ||
from jet.tests.models import TestModel | ||
from jet.utils import JsonResponse, get_model_instance_label | ||
|
||
|
||
class UtilsTestCase(TestCase): | ||
def test_json_response(self): | ||
response = JsonResponse({'str': 'string', 'int': 1}) | ||
self.assertEqual(response.content, '{"int": 1, "str": "string"}') | ||
self.assertEqual(response.get('Content-Type'), 'application/json') | ||
|
||
def test_get_model_instance_label(self): | ||
field1 = 'value' | ||
field2 = 2 | ||
pinned_application = TestModel.objects.create(field1=field1, field2=field2) | ||
self.assertEqual(get_model_instance_label(pinned_application), '%s%d' % (field1, field2)) | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,212 @@ | ||
import json | ||
from django.contrib.auth.models import User | ||
from django.core.urlresolvers import reverse | ||
from django.test import TestCase, Client | ||
from jet.modules import LinkList | ||
from jet.models import UserDashboardModule, Bookmark | ||
|
||
|
||
class ViewsTestCase(TestCase): | ||
def setUp(self): | ||
self.assertTrue(self._login()) | ||
|
||
def _login(self): | ||
username = 'admin' | ||
email = '[email protected]' | ||
password = 'admin' | ||
self.admin = Client() | ||
self.admin_user = User.objects.create_superuser(username, email, password) | ||
return self.admin.login(username=username, password=password) | ||
|
||
def test_module_update_view(self): | ||
title = 'Quick links Test' | ||
new_title = title + '2' | ||
new_layout = 'stacked' | ||
module = UserDashboardModule.objects.create( | ||
title=title, | ||
module='jet.modules.LinkList', | ||
app_label=None, | ||
user=self.admin_user.pk, | ||
column=0, | ||
order=0, | ||
settings='{"layout": "inline"}', | ||
children='[]' | ||
) | ||
response = self.admin.get(reverse('jet:update_module', kwargs={'pk': module.pk})) | ||
|
||
self.assertEqual(response.status_code, 200) | ||
self.assertTrue(response.context['module'] is not None) | ||
self.assertTrue(isinstance(response.context['module'], LinkList)) | ||
self.assertEqual(response.context['module'].title, title) | ||
|
||
post = { | ||
'title': new_title, | ||
'layout': new_layout, | ||
'children-TOTAL_FORMS': '2', | ||
'children-INITIAL_FORMS': '1', | ||
'children-MIN_NUM_FORMS': '0', | ||
'children-MAX_NUM_FORMS': '1000', | ||
'children-0-url': 'http://docs.djangoproject.com/', | ||
'children-0-title': 'Django documentation', | ||
'children-0-external': 'on', | ||
'children-1-url': '', | ||
'children-1-title': '', | ||
'children-__prefix__-url': '', | ||
'children-__prefix__-title': '', | ||
'_save': 'Save' | ||
} | ||
|
||
self.admin.post(reverse('jet:update_module', kwargs={'pk': module.pk}), post) | ||
module = UserDashboardModule.objects.get(pk=module.pk) | ||
settings = json.loads(module.settings) | ||
self.assertEqual(module.title, new_title) | ||
self.assertEqual(settings['layout'], new_layout) | ||
|
||
module.delete() | ||
|
||
def test_add_bookmark_view(self): | ||
url = 'http://test.com/' | ||
title = 'Title' | ||
response = self.admin.post(reverse('jet:add_bookmark'), {'url': url, 'title': title}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertNotEqual(response['id'], None) | ||
bookmark = Bookmark.objects.get(pk=response['id']) | ||
self.assertNotEqual(bookmark, None) | ||
self.assertEqual(bookmark.title, title) | ||
self.assertEqual(bookmark.url, url) | ||
|
||
def test_add_bookmark_view_unauthorized(self): | ||
url = 'http://test.com/' | ||
title = 'Title' | ||
response = self.client.post(reverse('jet:add_bookmark'), {'url': url, 'title': title}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertTrue(response['error']) | ||
|
||
def test_remove_bookmark_view(self): | ||
url = 'http://test.com/' | ||
title = 'Title' | ||
bookmark = Bookmark.objects.create(url=url, title=title, user=self.admin_user.pk) | ||
response = self.admin.post(reverse('jet:remove_bookmark'), {'id': bookmark.id}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertFalse(Bookmark.objects.filter(pk=bookmark.pk).exists()) | ||
|
||
def test_toggle_application_pin_view(self): | ||
app_label = 'test_app' | ||
|
||
response = self.admin.post(reverse('jet:toggle_application_pin'), {'app_label': app_label}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertTrue(response['pinned']) | ||
|
||
response = self.admin.post(reverse('jet:toggle_application_pin'), {'app_label': app_label}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertFalse(response['pinned']) | ||
|
||
def test_update_dashboard_modules_view(self): | ||
app_label = None | ||
module_0 = UserDashboardModule.objects.create( | ||
title='', | ||
module='jet.modules.LinkList', | ||
app_label=app_label, | ||
user=self.admin_user.pk, | ||
column=0, | ||
order=0 | ||
) | ||
module_1 = UserDashboardModule.objects.create( | ||
title='', | ||
module='jet.modules.LinkList', | ||
app_label=app_label, | ||
user=self.admin_user.pk, | ||
column=0, | ||
order=1 | ||
) | ||
response = self.admin.post(reverse('jet:update_dashboard_modules'), { | ||
'app_label': '', | ||
'modules': json.dumps([ | ||
{'id': module_0.pk, 'column': 0, 'order': 1}, | ||
{'id': module_1.pk, 'column': 0, 'order': 0} | ||
]) | ||
}) | ||
|
||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
|
||
module_0 = UserDashboardModule.objects.get(pk=module_0.pk) | ||
module_1 = UserDashboardModule.objects.get(pk=module_1.pk) | ||
|
||
self.assertEqual(module_0.order, 1) | ||
self.assertEqual(module_1.order, 0) | ||
|
||
module_0.delete() | ||
module_1.delete() | ||
|
||
def test_add_user_dashboard_module_view(self): | ||
response = self.admin.post(reverse('jet:add_user_dashboard_module_view'), { | ||
'app_label': '', | ||
'type': 'available_children', | ||
'module': 0 | ||
}) | ||
|
||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertNotEqual(response['id'], None) | ||
module = UserDashboardModule.objects.get(pk=response['id']) | ||
self.assertNotEqual(module, None) | ||
|
||
def test_update_dashboard_module_collapse_view(self): | ||
module = UserDashboardModule.objects.create( | ||
title='', | ||
module='jet.modules.LinkList', | ||
app_label=None, | ||
user=self.admin_user.pk, | ||
column=0, | ||
order=0 | ||
) | ||
response = self.admin.post(reverse('jet:update_dashboard_module_collapse'), { | ||
'id': module.pk, 'collapsed': True | ||
}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertTrue(response['collapsed']) | ||
|
||
module = UserDashboardModule.objects.get(pk=module.pk) | ||
response = self.admin.post(reverse('jet:update_dashboard_module_collapse'), { | ||
'id': module.pk, 'collapsed': False | ||
}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertFalse(response['collapsed']) | ||
|
||
module.delete() | ||
|
||
def test_remove_dashboard_module_view(self): | ||
module = UserDashboardModule.objects.create( | ||
title='', | ||
module='jet.modules.LinkList', | ||
app_label=None, | ||
user=self.admin_user.pk, | ||
column=0, | ||
order=0 | ||
) | ||
response = self.admin.post(reverse('jet:remove_dashboard_module'), {'id': module.pk}) | ||
self.assertEqual(response.status_code, 200) | ||
response = json.loads(response.content) | ||
self.assertFalse(response['error']) | ||
self.assertFalse(UserDashboardModule.objects.filter(pk=module.pk).exists()) | ||
|
||
|
||
|
||
|
||
|
Oops, something went wrong.