diff options
| author | Aymeric Augustin | 2013-11-01 21:51:37 +0100 | 
|---|---|---|
| committer | Aymeric Augustin | 2013-11-01 21:51:37 +0100 | 
| commit | 96f1cb4b0d4b10903502e917ddaa460bc05f5ca3 (patch) | |
| tree | 2d72e912b523f498f7e1c82aad362d5e6a58f396 /tests/panels/test_sql.py | |
| parent | f69f51f7abf25aaf5282c953475e8975694f41c1 (diff) | |
| download | django-debug-toolbar-96f1cb4b0d4b10903502e917ddaa460bc05f5ca3.tar.bz2 | |
Split tests across several modules.
Fix #426.
Diffstat (limited to 'tests/panels/test_sql.py')
| -rw-r--r-- | tests/panels/test_sql.py | 73 | 
1 files changed, 73 insertions, 0 deletions
| diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py new file mode 100644 index 0000000..10846f5 --- /dev/null +++ b/tests/panels/test_sql.py @@ -0,0 +1,73 @@ +# coding: utf-8 + +from __future__ import unicode_literals + +from django.contrib.auth.models import User +from django.db import connection +from django.db.utils import DatabaseError +from django.utils import unittest + +from debug_toolbar.panels.sql import SQLDebugPanel + +from ..base import BaseTestCase + + +class SQLPanelTestCase(BaseTestCase): + +    def test_recording(self): +        panel = self.toolbar.get_panel(SQLDebugPanel) +        self.assertEqual(len(panel._queries), 0) + +        list(User.objects.all()) + +        # ensure query was logged +        self.assertEqual(len(panel._queries), 1) +        query = panel._queries[0] +        self.assertEqual(query[0], 'default') +        self.assertTrue('sql' in query[1]) +        self.assertTrue('duration' in query[1]) +        self.assertTrue('stacktrace' in query[1]) + +        # ensure the stacktrace is populated +        self.assertTrue(len(query[1]['stacktrace']) > 0) + +    def test_non_ascii_query(self): +        panel = self.toolbar.get_panel(SQLDebugPanel) +        self.assertEqual(len(panel._queries), 0) + +        # non-ASCII query +        list(User.objects.extra(where=["username = 'café'"])) +        self.assertEqual(len(panel._queries), 1) + +        # non-ASCII parameters +        list(User.objects.filter(username='café')) +        self.assertEqual(len(panel._queries), 2) + +    @unittest.skipUnless(connection.vendor == 'postgresql', +                         'Test valid only on PostgreSQL') +    def test_erroneous_query(self): +        """ +        Test that an error in the query isn't swallowed by the middleware. +        """ +        try: +            connection.cursor().execute("erroneous query") +        except DatabaseError as e: +            self.assertTrue('erroneous query' in str(e)) + +    def test_disable_stacktraces(self): +        panel = self.toolbar.get_panel(SQLDebugPanel) +        self.assertEqual(len(panel._queries), 0) + +        with self.settings(DEBUG_TOOLBAR_CONFIG={'ENABLE_STACKTRACES': False}): +            list(User.objects.all()) + +        # ensure query was logged +        self.assertEqual(len(panel._queries), 1) +        query = panel._queries[0] +        self.assertEqual(query[0], 'default') +        self.assertTrue('sql' in query[1]) +        self.assertTrue('duration' in query[1]) +        self.assertTrue('stacktrace' in query[1]) + +        # ensure the stacktrace is empty +        self.assertEqual([], query[1]['stacktrace']) | 
