Skip to content

Commit

Permalink
Add initial tests
Browse files Browse the repository at this point in the history
  • Loading branch information
f1nality committed Aug 29, 2015
1 parent 12420d9 commit d75a732
Show file tree
Hide file tree
Showing 9 changed files with 405 additions and 0 deletions.
Empty file added jet/tests/__init__.py
Empty file.
33 changes: 33 additions & 0 deletions jet/tests/dashboard.py
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
))
11 changes: 11 additions & 0 deletions jet/tests/models.py
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)
44 changes: 44 additions & 0 deletions jet/tests/settings.py
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/'




65 changes: 65 additions & 0 deletions jet/tests/test_dashboard.py
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')



19 changes: 19 additions & 0 deletions jet/tests/test_utils.py
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))



212 changes: 212 additions & 0 deletions jet/tests/test_views.py
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())





Loading

0 comments on commit d75a732

Please sign in to comment.