Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
"""Notifier polling stays active when another gateway owns dispatching."""
|
||||
|
||||
import asyncio
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from gateway.config import Platform
|
||||
from gateway.run import GatewayRunner
|
||||
|
||||
|
||||
def _make_runner(with_adapter=False):
|
||||
runner = GatewayRunner.__new__(GatewayRunner)
|
||||
runner._running = True
|
||||
runner.adapters = {Platform.TELEGRAM: MagicMock()} if with_adapter else {}
|
||||
runner._kanban_sub_fail_counts = {}
|
||||
return runner
|
||||
|
||||
|
||||
def test_notifier_watcher_polls_without_dispatch_ownership():
|
||||
"""A profile gateway still polls its profile-owned subscriptions."""
|
||||
runner = _make_runner(with_adapter=True)
|
||||
past_gate = []
|
||||
sleep_calls = []
|
||||
|
||||
async def fake_sleep(delay):
|
||||
sleep_calls.append(delay)
|
||||
# Stop after the initial delay + first per-interval sleep so the loop
|
||||
# body runs exactly once.
|
||||
if len(sleep_calls) >= 2:
|
||||
runner._running = False
|
||||
|
||||
async def fake_to_thread(fn, *args, **kwargs):
|
||||
return fn(*args, **kwargs)
|
||||
|
||||
import hermes_cli.kanban_db as _kb
|
||||
|
||||
with patch.object(
|
||||
_kb, "list_boards",
|
||||
side_effect=lambda *a, **kw: past_gate.append(True) or [],
|
||||
):
|
||||
with patch("asyncio.sleep", side_effect=fake_sleep):
|
||||
with patch("asyncio.to_thread", side_effect=fake_to_thread):
|
||||
asyncio.run(runner._kanban_notifier_watcher())
|
||||
|
||||
assert past_gate, (
|
||||
"gateways without the dispatch lock must still poll owned subscriptions"
|
||||
)
|
||||
Reference in New Issue
Block a user