|
14 | 14 | ) |
15 | 15 | from common.projects.permissions import VIEW_PROJECT |
16 | 16 | from django.contrib.contenttypes.models import ContentType |
| 17 | +from django.contrib.postgres.signals import ( |
| 18 | + register_type_handlers, |
| 19 | +) |
17 | 20 | from django.core.cache import caches |
18 | 21 | from django.db.backends.base.creation import TEST_DATABASE_PREFIX |
19 | 22 | from django.test.utils import setup_databases |
|
22 | 25 | from mypy_boto3_dynamodb.service_resource import DynamoDBServiceResource, Table |
23 | 26 | from pyfakefs.fake_filesystem import FakeFilesystem |
24 | 27 | from pytest import FixtureRequest |
| 28 | +from pytest_django import DjangoDbBlocker |
25 | 29 | from pytest_django.fixtures import SettingsWrapper |
26 | 30 | from pytest_django.plugin import blocking_manager_key |
27 | 31 | from pytest_mock import MockerFixture |
@@ -178,6 +182,23 @@ def django_db_setup(request: pytest.FixtureRequest) -> None: |
178 | 182 | db_settings["NAME"] = test_db_name |
179 | 183 |
|
180 | 184 |
|
| 185 | +@pytest.fixture |
| 186 | +def db( |
| 187 | + request: pytest.FixtureRequest, |
| 188 | + django_db_blocker: DjangoDbBlocker, |
| 189 | + db: None, |
| 190 | +) -> None: |
| 191 | + if request.config.option.ci: |
| 192 | + from django.db import connections |
| 193 | + |
| 194 | + # Ensure psycopg type handlers are registered. |
| 195 | + # This is necessary for tests that involve `HStoreField`. |
| 196 | + for connection in connections.all(): |
| 197 | + if connection.vendor == "postgresql": |
| 198 | + with django_db_blocker.unblock(): |
| 199 | + register_type_handlers(connection) |
| 200 | + |
| 201 | + |
181 | 202 | @pytest.fixture(autouse=True) |
182 | 203 | def restrict_http_requests(monkeypatch: pytest.MonkeyPatch) -> None: |
183 | 204 | """ |
|
0 commit comments