Add durable platform event delivery contract

This commit is contained in:
2026-07-29 17:34:52 +02:00
parent e8fed6d25a
commit a192a2215f
8 changed files with 373 additions and 17 deletions

View File

@@ -21,6 +21,30 @@ class InstallConfigTests(unittest.TestCase):
with self.assertRaises(ValidationError):
Settings(CALENDAR_OUTBOX_TERMINAL_RETENTION_DAYS="-1")
def test_platform_event_outbox_limits_are_validated(self) -> None:
defaults = Settings()
self.assertEqual(defaults.platform_event_outbox_max_attempts, 8)
self.assertEqual(
defaults.platform_event_outbox_terminal_retention_days,
90,
)
configured = Settings(
PLATFORM_EVENT_OUTBOX_MAX_ATTEMPTS="12",
PLATFORM_EVENT_OUTBOX_TERMINAL_RETENTION_DAYS="30",
)
self.assertEqual(configured.platform_event_outbox_max_attempts, 12)
self.assertEqual(
configured.platform_event_outbox_terminal_retention_days,
30,
)
for values in (
{"PLATFORM_EVENT_OUTBOX_MAX_ATTEMPTS": "0"},
{"PLATFORM_EVENT_OUTBOX_MAX_ATTEMPTS": "101"},
{"PLATFORM_EVENT_OUTBOX_TERMINAL_RETENTION_DAYS": "-1"},
):
with self.subTest(values=values), self.assertRaises(ValidationError):
Settings(**values)
def test_scheduling_cancellation_notice_setting_is_bounded(self) -> None:
self.assertEqual(Settings().scheduling_cancellation_notice_days, 30)
self.assertEqual(