From bdec62706f58e564716e40bea69cc3e3cae3fe86 Mon Sep 17 00:00:00 2001
From: Mark Pittaway <mark.pittaway@gmail.com>
Date: Fri, 29 Nov 2024 10:45:27 +1100
Subject: [PATCH] add tests

---
 tests/core/signals.py | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 tests/core/signals.py

diff --git a/tests/core/signals.py b/tests/core/signals.py
new file mode 100644
index 000000000..61ed11405
--- /dev/null
+++ b/tests/core/signals.py
@@ -0,0 +1,34 @@
+from unittest import IsolatedAsyncioTestCase
+from unittest.mock import Mock, AsyncMock
+from superdesk.core import AsyncSignal
+
+
+class AsyncSignalsTestCase(IsolatedAsyncioTestCase):
+    async def test_signals(self):
+        signal = AsyncSignal[str, bool]("on_some_event")
+
+        signal_cb1 = Mock()
+        signal_cb2 = AsyncMock()
+        signal_cb3 = AsyncMock()
+
+        signal += signal_cb1
+        signal.connect(signal_cb2)
+        signal.connect(signal_cb3)
+
+        await signal.send("monkeys", True)
+        signal_cb1.assert_called_once_with("monkeys", True)
+        signal_cb2.assert_called_once_with("monkeys", True)
+        signal_cb2.assert_awaited()
+        signal_cb3.assert_called_once_with("monkeys", True)
+        signal_cb3.assert_awaited()
+
+        signal_cb1.reset_mock()
+        signal_cb2.reset_mock()
+        signal_cb3.reset_mock()
+
+        signal -= signal_cb2
+        signal.disconnect(signal_cb3)
+        await signal.send("space", False)
+        signal_cb1.assert_called_once_with("space", False)
+        signal_cb2.assert_not_called()
+        signal_cb3.assert_not_called()