Add cross-module operational and interaction contracts
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from govoplan_core.celery_app import celery
|
||||
from govoplan_core.settings import settings
|
||||
|
||||
|
||||
class CeleryQueueContractTests(unittest.TestCase):
|
||||
def test_default_worker_queues_cover_every_routed_task(self) -> None:
|
||||
configured = {
|
||||
value.strip()
|
||||
for value in settings.celery_queues.split(",")
|
||||
if value.strip()
|
||||
}
|
||||
routes = celery.conf.task_routes
|
||||
self.assertIsInstance(routes, dict)
|
||||
routed = {
|
||||
str(route["queue"])
|
||||
for route in routes.values()
|
||||
if isinstance(route, dict) and route.get("queue")
|
||||
}
|
||||
|
||||
self.assertEqual(set(), routed - configured)
|
||||
|
||||
def test_delivery_tasks_keep_worker_loss_protection(self) -> None:
|
||||
self.assertTrue(celery.conf.task_acks_late)
|
||||
self.assertTrue(celery.conf.task_reject_on_worker_lost)
|
||||
self.assertEqual(1, celery.conf.worker_prefetch_multiplier)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
@@ -32,6 +32,18 @@ def workflow_topic(
|
||||
|
||||
|
||||
class DocumentationTopicContractTests(unittest.TestCase):
|
||||
def test_registry_rejects_empty_documentation_version_range(self) -> None:
|
||||
topic = DocumentationTopic(
|
||||
id="example.versioned",
|
||||
title="Versioned",
|
||||
summary="Invalid range",
|
||||
version_min="2.0.0",
|
||||
version_max_exclusive="2.0.0",
|
||||
)
|
||||
|
||||
with self.assertRaisesRegex(RegistryError, "empty version range"):
|
||||
registry_for(topic).validate()
|
||||
|
||||
def test_user_workflow_requires_scope_conditions(self) -> None:
|
||||
topic = workflow_topic(conditions=())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user