Add Handbook.md benchmark tasks
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
from helpers import seed_state
|
||||
|
||||
from slack_mock.server import delete_message, edit_message
|
||||
from slack_mock.state import get_state
|
||||
|
||||
|
||||
def setup_function() -> None:
|
||||
seed_state(
|
||||
{
|
||||
"is_admin": True,
|
||||
"users": {
|
||||
"U001": {"id": "U001", "name": "alice"},
|
||||
"U002": {"id": "U002", "name": "bob"},
|
||||
},
|
||||
"channels": {"C001": {"id": "C001", "name": "general", "context_team_id": "T_MOCK"}},
|
||||
"messages": {
|
||||
"C001": [
|
||||
{"ts": "1700000001.000", "text": "Hello world", "user": "U001", "type": "message"},
|
||||
{
|
||||
"ts": "1700000002.000",
|
||||
"text": "Reply in thread",
|
||||
"user": "U002",
|
||||
"type": "message",
|
||||
"thread_ts": "1700000001.000",
|
||||
},
|
||||
{"ts": "1700000003.000", "text": "Another message", "user": "U001", "type": "message"},
|
||||
]
|
||||
},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_edit_message() -> None:
|
||||
result = await edit_message("C001", "1700000001.000", "Updated text")
|
||||
assert result["ok"] is True
|
||||
assert result["text"] == "Updated text"
|
||||
assert result["message"]["text"] == "Updated text"
|
||||
assert result["channel"] == "C001"
|
||||
assert result["ts"] == "1700000001.000"
|
||||
|
||||
msg = get_state().messages["C001"][0]
|
||||
assert msg.edited is not None
|
||||
assert msg.edited.user == "U_MOCK_BOT"
|
||||
assert msg.edited.ts
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_edit_message_errors_and_thread_replies() -> None:
|
||||
assert (await edit_message("INVALID", "1700000001.000", "x"))["error"] == "channel_not_found"
|
||||
assert (await edit_message("C001", "9999999999.000", "x"))["error"] == "message_not_found"
|
||||
|
||||
reply = await edit_message("C001", "1700000002.000", "Edited reply")
|
||||
assert reply["ok"] is True
|
||||
assert reply["message"]["text"] == "Edited reply"
|
||||
assert reply["message"]["thread_ts"] == "1700000001.000"
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_message() -> None:
|
||||
assert len(get_state().messages["C001"]) == 3
|
||||
result = await delete_message("C001", "1700000003.000")
|
||||
assert result == {"ok": True, "channel": "C001", "ts": "1700000003.000"}
|
||||
assert len(get_state().messages["C001"]) == 2
|
||||
assert all(message.ts != "1700000003.000" for message in get_state().messages["C001"])
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_delete_message_errors_and_thread_replies() -> None:
|
||||
assert (await delete_message("INVALID", "1700000001.000"))["error"] == "channel_not_found"
|
||||
assert (await delete_message("C001", "9999999999.000"))["error"] == "message_not_found"
|
||||
|
||||
result = await delete_message("C001", "1700000002.000")
|
||||
assert result["ok"] is True
|
||||
assert any(message.ts == "1700000001.000" for message in get_state().messages["C001"])
|
||||
Reference in New Issue
Block a user