Creates a test for CachalotPanel.

This commit is contained in:
Bertrand Bordage 2016-10-23 20:06:58 +02:00
parent 5965319688
commit 3dd3082575
6 changed files with 89 additions and 4 deletions

View File

@ -6,4 +6,5 @@ from .multi_db import MultiDatabaseTestCase
from .settings import SettingsTestCase from .settings import SettingsTestCase
from .api import APITestCase, CommandTestCase from .api import APITestCase, CommandTestCase
from .signals import SignalsTestCase from .signals import SignalsTestCase
from .postgres import PostgresReadTest from .postgres import PostgresReadTestCase
from .debug_toolbar import DebugToolbarTestCase

View File

@ -0,0 +1,30 @@
from uuid import UUID
from bs4 import BeautifulSoup
from django.test import LiveServerTestCase, override_settings
@override_settings(DEBUG=True)
class DebugToolbarTestCase(LiveServerTestCase):
def test_rendering(self):
#
# Rendering toolbar
#
response = self.client.get('/')
self.assertEqual(response.status_code, 200)
soup = BeautifulSoup(response.content.decode('utf-8'), 'html.parser')
toolbar = soup.find(id='djDebug')
self.assertIsNotNone(toolbar)
store_id = toolbar.attrs['data-store-id']
# Checks that store_id is a valid UUID.
UUID(store_id)
render_panel_url = toolbar.attrs['data-render-panel-url']
panel_id = soup.find(title='Cachalot')['class'][0]
panel_url = ('%s?store_id=%s&panel_id=%s'
% (render_panel_url, store_id, panel_id))
#
# Rendering panel
#
panel_response = self.client.get(panel_url)
self.assertEqual(panel_response.status_code, 200)
# TODO: Check that the displayed data is correct.

View File

@ -31,7 +31,7 @@ if DJANGO_GTE_1_9:
'Caching psycopg2 objects is not working with file-based cache ' 'Caching psycopg2 objects is not working with file-based cache '
'and Python 2.7 (see https://code.djangoproject.com/ticket/25501).') 'and Python 2.7 (see https://code.djangoproject.com/ticket/25501).')
@override_settings(USE_TZ=True) @override_settings(USE_TZ=True)
class PostgresReadTest(TransactionTestCase): class PostgresReadTestCase(TransactionTestCase):
def setUp(self): def setUp(self):
self.obj1 = PostgresModel( self.obj1 = PostgresModel(
int_array=[1, 2, 3], int_array=[1, 2, 3],

View File

@ -7,3 +7,6 @@ python-memcached
pylibmc pylibmc
pytz pytz
Jinja2 Jinja2
django-debug-toolbar
beautifulsoup4

13
runtests_urls.py Normal file
View File

@ -0,0 +1,13 @@
import debug_toolbar
from django.conf.urls import url, include
from django.http import HttpResponse
def empty_page(request):
return HttpResponse('<body></body>')
urlpatterns = [
url(r'^$', empty_page),
url(r'^__debug__/', include(debug_toolbar.urls)),
]

View File

@ -118,8 +118,8 @@ TEMPLATES = [
] ]
MIDDLEWARE_CLASSES = () MIDDLEWARE_CLASSES = []
PASSWORD_HASHERS = ('django.contrib.auth.hashers.MD5PasswordHasher',) PASSWORD_HASHERS = ['django.contrib.auth.hashers.MD5PasswordHasher']
SECRET_KEY = 'its not important in tests but we have to set it' SECRET_KEY = 'its not important in tests but we have to set it'
@ -129,3 +129,41 @@ TIME_ZONE = 'UTC'
CACHALOT_ENABLED = True CACHALOT_ENABLED = True
#
# Settings for django-debug-toolbar
#
INSTALLED_APPS += [
'django.contrib.staticfiles',
'debug_toolbar',
]
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.settings.SettingsPanel',
'debug_toolbar.panels.headers.HeadersPanel',
'debug_toolbar.panels.request.RequestPanel',
'debug_toolbar.panels.sql.SQLPanel',
'debug_toolbar.panels.staticfiles.StaticFilesPanel',
'debug_toolbar.panels.templates.TemplatesPanel',
'debug_toolbar.panels.cache.CachePanel',
'debug_toolbar.panels.signals.SignalsPanel',
'debug_toolbar.panels.logging.LoggingPanel',
'debug_toolbar.panels.redirects.RedirectsPanel',
'cachalot.panels.CachalotPanel',
]
DEBUG_TOOLBAR_CONFIG = {
# Djangos test client sets wsgi.multiprocess to True inappropriately.
'RENDER_PANELS': False,
}
MIDDLEWARE_CLASSES += [
'debug_toolbar.middleware.DebugToolbarMiddleware',
]
INTERNAL_IPS = ['127.0.0.1']
ROOT_URLCONF = 'runtests_urls'
STATIC_URL = '/static/'