disagreement/tests/test_modals.py

34 lines
1.1 KiB
Python

import pytest
from disagreement.interactions import Interaction
from disagreement.ui import Modal, text_input
from disagreement.enums import InteractionCallbackType, TextInputStyle
class MyModal(Modal):
def __init__(self):
super().__init__(title="Test", custom_id="m1")
@text_input(label="Name", style=TextInputStyle.SHORT)
async def name(self, interaction: Interaction):
pass
def test_modal_to_dict():
modal = MyModal()
data = modal.to_dict()
assert data["title"] == "Test"
assert data["custom_id"] == "m1"
assert data["components"][0]["components"][0]["label"] == "Name"
@pytest.mark.asyncio
async def test_respond_modal(dummy_bot, interaction):
modal = MyModal()
await interaction.respond_modal(modal)
dummy_bot._http.create_interaction_response.assert_called_once()
payload = dummy_bot._http.create_interaction_response.call_args.kwargs["payload"]
payload_dict = payload.to_dict()
assert payload_dict["type"] == InteractionCallbackType.MODAL.value
assert payload_dict["data"]["custom_id"] == "m1"