|
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