From 3ffe09d8358a5bc9cab6362a62573cea3dfc6681 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 1 Jul 2025 14:05:37 -0700 Subject: [PATCH] more tests --- tests/app/celery/test_tasks.py | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/app/celery/test_tasks.py b/tests/app/celery/test_tasks.py index d3d794a32..652b4ef8d 100644 --- a/tests/app/celery/test_tasks.py +++ b/tests/app/celery/test_tasks.py @@ -1756,3 +1756,40 @@ def test_save_api_email_or_sms_integrity_error(): mock_log.assert_called_once() assert "already exists" in mock_log.call_args[0][0] mock_self.retry.assert_not_called() + + +def test_save_api_email_or_sms_sqlalchemy_error_with_max_retries(): + encrypted = MagicMock() + decrypted = { + "id": "notif-id", + "service_id": "svc-id", + "notification_type": "sms", + "template_id": "template-id", + "template_version": 1, + "to": "+15555555", + "client_reference": None, + "created_at": "2025-01-01T00:00:00", + "reply_to_text": "", + "status": "created", + "deocument_download_count": 0, + } + + class FakeMaxRetriesExceeded(Exception): + pass + + mock_self = MagicMock() + mock_self.retry.side_effect = FakeMaxRetriesExceeded + mock_self.MaxRetriesExceededError = FakeMaxRetriesExceeded + + with patch("app.celery.tasks.encryption.decrypt", return_value=decrypted), patch( + "app.celery.tasks.SerialisedService.from_id" + ), patch("app.celery.tasks.get_notification", return_value=None), patch( + "app.celery.tasks.persist_notification", side_effect=SQLAlchemyError("db issue") + ), patch( + "app.celery.tasks.current_app.logger.excepetion" + ) as mock_exception: + + with pytest.raises(SQLAlchemyError): + save_api_email_or_sms(mock_self, encrypted) + mock_exception.assert_called_once() + assert "Max retry failed" in mock_exception.call_args[0][0]