|
|
@@ -188,6 +188,24 @@ class ApplicationEventsTest(unittest.IsolatedAsyncioTestCase):
|
|
|
self.assertEqual(unknown_type_id, self.projector.cursor)
|
|
|
self.assertNotIn("unknown-type", self.projector.view)
|
|
|
|
|
|
+ async def test_same_event_key_cannot_hide_a_conflicting_payload(self):
|
|
|
+ service = self.runner.event_service
|
|
|
+ await service.emit(
|
|
|
+ source_trace_id=self.trace.trace_id,
|
|
|
+ event_type="task.progress.revised",
|
|
|
+ event_key="stable-operation",
|
|
|
+ effective_at_sequence=1,
|
|
|
+ payload={"revision": 1},
|
|
|
+ )
|
|
|
+ with self.assertRaisesRegex(ValueError, "conflicting payload"):
|
|
|
+ await service.emit(
|
|
|
+ source_trace_id=self.trace.trace_id,
|
|
|
+ event_type="task.progress.revised",
|
|
|
+ event_key="stable-operation",
|
|
|
+ effective_at_sequence=1,
|
|
|
+ payload={"revision": 2},
|
|
|
+ )
|
|
|
+
|
|
|
async def test_event_append_failure_preserves_state_and_reconcile_repairs_it(self):
|
|
|
service = self.runner.event_service
|
|
|
original_append = self.store.append_event
|