43 lines
1014 B
Python
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()
|