disagreement/tests/test_event_error_hook.py
2025-06-09 22:25:14 -06:00

43 lines
1014 B
Python

import pytest
from unittest.mock import AsyncMock
from disagreement.event_dispatcher import EventDispatcher
class DummyClient:
pass
@pytest.mark.asyncio
async def test_dispatch_error_hook_called():
dispatcher = EventDispatcher(DummyClient())
hook = AsyncMock()
dispatcher.on_dispatch_error = hook
async def listener(_):
raise RuntimeError("boom")
dispatcher.register("TEST_EVENT", listener)
await dispatcher.dispatch("TEST_EVENT", {})
hook.assert_awaited_once()
args = hook.call_args.args
assert args[0] == "TEST_EVENT"
assert isinstance(args[1], RuntimeError)
assert args[2] is listener
@pytest.mark.asyncio
async def test_dispatch_error_hook_not_called_when_ok():
dispatcher = EventDispatcher(DummyClient())
hook = AsyncMock()
dispatcher.on_dispatch_error = hook
async def listener(_):
return
dispatcher.register("TEST_EVENT", listener)
await dispatcher.dispatch("TEST_EVENT", {})
hook.assert_not_awaited()