|
2 | 2 |
|
3 | 3 | from __future__ import absolute_import, unicode_literals
|
4 | 4 |
|
| 5 | +import datetime |
5 | 6 | import unittest
|
6 | 7 |
|
7 | 8 | from django.contrib.auth.models import User
|
8 | 9 | from django.db import connection
|
| 10 | +from django.db.models import Count |
9 | 11 | from django.db.utils import DatabaseError
|
10 | 12 | from django.shortcuts import render
|
11 | 13 | from django.test.utils import override_settings
|
@@ -69,6 +71,35 @@ def test_non_ascii_query(self):
|
69 | 71 | # ensure the panel renders correctly
|
70 | 72 | self.assertIn('café', self.panel.content)
|
71 | 73 |
|
| 74 | + def test_param_conversion(self): |
| 75 | + self.assertEqual(len(self.panel._queries), 0) |
| 76 | + |
| 77 | + list( |
| 78 | + User.objects |
| 79 | + .filter(first_name='Foo') |
| 80 | + .filter(is_staff=True) |
| 81 | + .filter(is_superuser=False) |
| 82 | + ) |
| 83 | + list( |
| 84 | + User.objects |
| 85 | + .annotate(group_count=Count('groups__id')) |
| 86 | + .filter(group_count__lt=10) |
| 87 | + .filter(group_count__gt=1) |
| 88 | + ) |
| 89 | + list(User.objects.filter(date_joined=datetime.datetime(2017, 12, 22, 16, 7, 1))) |
| 90 | + |
| 91 | + self.panel.process_response(self.request, self.response) |
| 92 | + self.panel.generate_stats(self.request, self.response) |
| 93 | + |
| 94 | + # ensure query was logged |
| 95 | + self.assertEqual(len(self.panel._queries), 3) |
| 96 | + |
| 97 | + self.assertEqual(tuple([q[1]['params'] for q in self.panel._queries]), ( |
| 98 | + '["Foo", true, false]', |
| 99 | + '[10, 1]', |
| 100 | + '["2017-12-22 16:07:01"]' |
| 101 | + )) |
| 102 | + |
72 | 103 | def test_insert_content(self):
|
73 | 104 | """
|
74 | 105 | Test that the panel only inserts content after generate_stats and
|
|
0 commit comments