diff --git a/tests/panels/test_sql.py b/tests/panels/test_sql.py index 84b789868..08535a79e 100644 --- a/tests/panels/test_sql.py +++ b/tests/panels/test_sql.py @@ -1,6 +1,7 @@ import datetime import os import unittest +from unittest.mock import patch import django from django.contrib.auth.models import User @@ -10,6 +11,7 @@ from django.shortcuts import render from django.test.utils import override_settings +import debug_toolbar.panels.sql.tracking as sql_tracking from debug_toolbar import settings as dt_settings from ..base import BaseTestCase @@ -61,6 +63,20 @@ def test_recording_chunked_cursor(self): # ensure query was logged self.assertEqual(len(self.panel._queries), 1) + @patch("debug_toolbar.panels.sql.tracking.state", wraps=sql_tracking.state) + def test_cursor_wrapper_singleton(self, mock_state): + list(User.objects.all()) + + # ensure that cursor wrapping is applied only once + self.assertEqual(mock_state.Wrapper.call_count, 1) + + @patch("debug_toolbar.panels.sql.tracking.state", wraps=sql_tracking.state) + def test_chunked_cursor_wrapper_singleton(self, mock_state): + list(User.objects.all().iterator()) + + # ensure that cursor wrapping is applied only once + self.assertEqual(mock_state.Wrapper.call_count, 1) + def test_generate_server_timing(self): self.assertEqual(len(self.panel._queries), 0)