|
1 | 1 | import datetime |
2 | 2 | import os |
3 | 3 | import unittest |
| 4 | +from unittest.mock import patch |
4 | 5 |
|
5 | 6 | import django |
6 | 7 | from django.contrib.auth.models import User |
|
10 | 11 | from django.shortcuts import render |
11 | 12 | from django.test.utils import override_settings |
12 | 13 |
|
| 14 | +import debug_toolbar.panels.sql.tracking as sql_tracking |
13 | 15 | from debug_toolbar import settings as dt_settings |
14 | 16 |
|
15 | 17 | from ..base import BaseTestCase |
@@ -61,6 +63,20 @@ def test_recording_chunked_cursor(self): |
61 | 63 | # ensure query was logged |
62 | 64 | self.assertEqual(len(self.panel._queries), 1) |
63 | 65 |
|
| 66 | + @patch("debug_toolbar.panels.sql.tracking.state", wraps=sql_tracking.state) |
| 67 | + def test_cursor_wrapper_singleton(self, mock_state): |
| 68 | + list(User.objects.all()) |
| 69 | + |
| 70 | + # ensure that cursor wrapping is applied only once |
| 71 | + self.assertEqual(mock_state.Wrapper.call_count, 1) |
| 72 | + |
| 73 | + @patch("debug_toolbar.panels.sql.tracking.state", wraps=sql_tracking.state) |
| 74 | + def test_chunked_cursor_wrapper_singleton(self, mock_state): |
| 75 | + list(User.objects.all().iterator()) |
| 76 | + |
| 77 | + # ensure that cursor wrapping is applied only once |
| 78 | + self.assertEqual(mock_state.Wrapper.call_count, 1) |
| 79 | + |
64 | 80 | def test_generate_server_timing(self): |
65 | 81 | self.assertEqual(len(self.panel._queries), 0) |
66 | 82 |
|
|
0 commit comments