35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
from dataclasses import replace
|
|
|
|
from takopi.settings import TelegramTopicsSettings
|
|
from takopi.telegram.topics import _resolve_topics_scope_raw, _topics_command_error
|
|
from tests.telegram_fakes import FakeTransport, make_cfg
|
|
|
|
|
|
def test_resolve_topics_scope_raw() -> None:
|
|
resolved, chat_ids = _resolve_topics_scope_raw("auto", 1, ())
|
|
assert resolved == "main"
|
|
assert chat_ids == frozenset({1})
|
|
|
|
resolved, chat_ids = _resolve_topics_scope_raw("projects", 1, (2, 3))
|
|
assert resolved == "projects"
|
|
assert chat_ids == frozenset({2, 3})
|
|
|
|
resolved, chat_ids = _resolve_topics_scope_raw("all", 1, (2,))
|
|
assert resolved == "all"
|
|
assert chat_ids == frozenset({1, 2})
|
|
|
|
|
|
def test_topics_command_error_for_wrong_chat() -> None:
|
|
transport = FakeTransport()
|
|
cfg = replace(
|
|
make_cfg(transport),
|
|
topics=TelegramTopicsSettings(enabled=True, scope="main"),
|
|
)
|
|
error = _topics_command_error(
|
|
cfg,
|
|
chat_id=999,
|
|
resolved_scope="main",
|
|
scope_chat_ids=frozenset({cfg.chat_id}),
|
|
)
|
|
assert error == "topics commands are only available in the main chat."
|