feat: add backoff service and some message reactions
This commit is contained in:
parent
2cad170eb3
commit
3bc4e19de1
11 changed files with 394 additions and 24 deletions
|
|
@ -1,3 +1,6 @@
|
|||
import asyncio
|
||||
import time
|
||||
|
||||
import pytest
|
||||
|
||||
from src.huesoporro.models import ChatbotSettings, User
|
||||
|
|
@ -33,3 +36,61 @@ async def test_is_mod_svc_returns_false_for_user_not_in_modlist(
|
|||
):
|
||||
is_mod = await is_mod_svc.run(user=user, username="TestUser2", channel=user.user)
|
||||
assert not is_mod
|
||||
|
||||
|
||||
async def test_backoff_svc_returns_for_first_attempt(
|
||||
backoff_svc, backoff_callable, async_backoff_callable
|
||||
):
|
||||
assert backoff_svc.call(backoff_callable) == "foo"
|
||||
|
||||
assert await backoff_svc.call_async(async_backoff_callable) == "async foo"
|
||||
|
||||
|
||||
async def test_backoff_svc_returns_none_for_second_attempt(
|
||||
backoff_svc, backoff_callable, async_backoff_callable
|
||||
):
|
||||
assert backoff_svc.call(backoff_callable) == "foo"
|
||||
assert backoff_svc.call(backoff_callable) is None
|
||||
|
||||
assert await backoff_svc.call_async(async_backoff_callable) == "async foo"
|
||||
assert await backoff_svc.call_async(async_backoff_callable) is None
|
||||
|
||||
|
||||
async def test_backoff_svc_returns_for_second_attempt_after_delay(
|
||||
backoff_svc, backoff_callable, async_backoff_callable
|
||||
):
|
||||
assert backoff_svc.call(backoff_callable) == "foo"
|
||||
assert backoff_svc.call(backoff_callable) is None
|
||||
time.sleep(3)
|
||||
assert backoff_svc.call(backoff_callable) == "foo"
|
||||
|
||||
assert await backoff_svc.call_async(async_backoff_callable) == "async foo"
|
||||
assert await backoff_svc.call_async(async_backoff_callable) is None
|
||||
await asyncio.sleep(3)
|
||||
assert await backoff_svc.call_async(async_backoff_callable) == "async foo"
|
||||
|
||||
|
||||
async def test_backoff_svc_raises_value_error_for_unknown_callable(backoff_svc):
|
||||
with pytest.raises(ValueError, match="not registered with backoff service"):
|
||||
backoff_svc.call(lambda: "foo")
|
||||
|
||||
|
||||
async def test_backoff_svc_raises_value_error_for_unknown_async_callable(backoff_svc):
|
||||
with pytest.raises(ValueError, match="not registered with backoff service"):
|
||||
await backoff_svc.call_async(lambda: "foo")
|
||||
|
||||
|
||||
async def test_backoff_svc_raises_value_error_for_async_called_from_sync(
|
||||
backoff_svc, backoff_callable
|
||||
):
|
||||
with pytest.raises(
|
||||
ValueError, match="Cannot call sync function with .call_async()"
|
||||
):
|
||||
await backoff_svc.call_async(backoff_callable)
|
||||
|
||||
|
||||
async def test_backoff_svc_raises_value_error_for_sync_called_from_async(
|
||||
backoff_svc, async_backoff_callable
|
||||
):
|
||||
with pytest.raises(ValueError, match="Cannot call async function with .call()"):
|
||||
backoff_svc.call(async_backoff_callable)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue