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

45 lines
1.1 KiB
Python

import asyncio
import pytest
from disagreement.hybrid_context import HybridContext
from disagreement.ext.app_commands.context import AppCommandContext
class DummyCommandCtx:
def __init__(self):
self.sent = []
async def reply(self, *a, **kw):
self.sent.append(("reply", a, kw))
async def edit(self, *a, **kw):
self.sent.append(("edit", a, kw))
class DummyAppCtx(AppCommandContext):
def __init__(self):
self.sent = []
async def send(self, *a, **kw):
self.sent.append(("send", a, kw))
@pytest.mark.asyncio
async def test_send_routes_based_on_context():
cctx = DummyCommandCtx()
actx = DummyAppCtx()
await HybridContext(cctx).send("hi")
await HybridContext(actx).send("hi")
assert cctx.sent[0][0] == "reply"
assert actx.sent[0][0] == "send"
@pytest.mark.asyncio
async def test_edit_delegation_and_error():
cctx = DummyCommandCtx()
hctx = HybridContext(cctx)
await hctx.edit("m")
assert cctx.sent[0][0] == "edit"
with pytest.raises(AttributeError):
await HybridContext(DummyAppCtx()).edit("m")