fix(events): keep registration status reads nonblocking

This commit is contained in:
2026-10-01 13:35:17 +03:30
parent 962238c32c
commit f924fcc52e
16 changed files with 498 additions and 107 deletions

View File

@@ -0,0 +1,35 @@
import json
import pytest
from django.db import OperationalError
from config.api_errors import handle_database_operational_error
pytestmark = pytest.mark.unit
class PostgresError(Exception):
def __init__(self, sqlstate):
super().__init__(sqlstate)
self.sqlstate = sqlstate
def test_database_lock_timeout_returns_retryable_service_unavailable():
error = OperationalError("canceling statement due to lock timeout")
error.__cause__ = PostgresError("55P03")
response = handle_database_operational_error(None, error)
assert response.status_code == 503
assert response["Retry-After"] == "2"
assert json.loads(response.content) == {
"detail": "درخواست به‌دلیل شلوغی موقت پایگاه داده انجام نشد؛ کمی بعد دوباره تلاش کنید."
}
def test_unrelated_database_operational_error_is_not_hidden():
error = OperationalError("database unavailable")
error.__cause__ = PostgresError("08006")
with pytest.raises(OperationalError, match="database unavailable"):
handle_database_operational_error(None, error)