| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- from __future__ import annotations
- from types import SimpleNamespace
- from unittest.mock import AsyncMock, MagicMock
- from pyrogram.types import Message, ReplyKeyboardRemove
- async def test_remove_reply_keyboard_sends_removal_and_cleans_notice(app_modules):
- keyboard = app_modules.load("wbb.core.reply_keyboard")
- notice = SimpleNamespace(delete=AsyncMock())
- message = SimpleNamespace(reply_text=AsyncMock(return_value=notice))
- await keyboard.remove_reply_keyboard(message)
- call = message.reply_text.await_args
- assert "消息内菜单" in call.args[0]
- assert isinstance(call.kwargs["reply_markup"], ReplyKeyboardRemove)
- assert call.kwargs["reply_markup"].selective is False
- notice.delete.assert_awaited_once_with()
- async def test_directory_menu_uses_inline_buttons_and_removes_old_keyboard(
- app_modules, monkeypatch
- ):
- module = app_modules.load("wbb.modules.teacher_directory")
- remove_reply_keyboard = AsyncMock()
- monkeypatch.setattr(module, "remove_reply_keyboard", remove_reply_keyboard)
- monkeypatch.setattr(
- module,
- "observe_directory_user",
- AsyncMock(
- return_value={
- "user_id": 123,
- "application_status": "none",
- }
- ),
- )
- monkeypatch.setattr(
- module,
- "verify_platform_membership",
- AsyncMock(return_value={"allowed": False}),
- )
- sent = SimpleNamespace()
- message = SimpleNamespace(
- from_user=SimpleNamespace(id=123),
- reply_text=AsyncMock(return_value=sent),
- )
- await module.send_directory_menu(message)
- remove_reply_keyboard.assert_awaited_once_with(message)
- markup = message.reply_text.await_args.kwargs["reply_markup"]
- labels = [
- button.text for row in markup.inline_keyboard for button in row
- ]
- assert "浏览技师" in labels
- assert "申请成为技师" in labels
- async def test_service_home_removes_old_keyboard_for_message_entry(
- app_modules, monkeypatch
- ):
- module = app_modules.load("wbb.modules.technician_services")
- remove_reply_keyboard = AsyncMock()
- monkeypatch.setattr(module, "remove_reply_keyboard", remove_reply_keyboard)
- monkeypatch.setattr(module, "_require_terms", AsyncMock(return_value=True))
- message = MagicMock(spec=Message)
- message.from_user = SimpleNamespace(id=123)
- message.reply_text = AsyncMock()
- await module.send_service_home(message)
- remove_reply_keyboard.assert_awaited_once_with(message)
- markup = message.reply_text.await_args.kwargs["reply_markup"]
- assert markup.inline_keyboard[0][0].text == "浏览技师"
|