65 lines
1.6 KiB
Python
65 lines
1.6 KiB
Python
import pytest
|
|
from types import SimpleNamespace
|
|
from unittest.mock import AsyncMock
|
|
|
|
from disagreement.client import Client
|
|
from disagreement.errors import DisagreementException
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_typing_context_manager_calls_http():
|
|
http = SimpleNamespace(trigger_typing=AsyncMock())
|
|
client = Client.__new__(Client)
|
|
client._http = http
|
|
client._closed = False
|
|
|
|
async with client.typing("123"):
|
|
pass
|
|
|
|
http.trigger_typing.assert_called_once_with("123")
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_typing_closed():
|
|
http = SimpleNamespace(trigger_typing=AsyncMock())
|
|
client = Client.__new__(Client)
|
|
client._http = http
|
|
client._closed = True
|
|
|
|
with pytest.raises(DisagreementException):
|
|
async with client.typing("123"):
|
|
pass
|
|
|
|
|
|
@pytest.mark.asyncio
|
|
async def test_context_typing():
|
|
http = SimpleNamespace(trigger_typing=AsyncMock())
|
|
|
|
class DummyBot:
|
|
def __init__(self):
|
|
self._http = http
|
|
self._closed = False
|
|
|
|
def typing(self, channel_id):
|
|
from disagreement.typing import Typing
|
|
|
|
return Typing(self, channel_id)
|
|
|
|
bot = DummyBot()
|
|
msg = SimpleNamespace(channel_id="c", id="1", guild_id=None, author=None)
|
|
|
|
async def dummy(ctx):
|
|
pass
|
|
|
|
from disagreement.ext.commands.core import Command, CommandContext
|
|
|
|
cmd = Command(dummy)
|
|
ctx = CommandContext(
|
|
message=msg, bot=bot, prefix="!", command=cmd, invoked_with="dummy"
|
|
)
|
|
|
|
async with ctx.typing():
|
|
pass
|
|
|
|
http.trigger_typing.assert_called_once_with("c")
|