feat: telegram forum topics support (#80)
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
from pathlib import Path
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
from takopi import cli
|
||||
from takopi.settings import TakopiSettings
|
||||
from takopi.telegram import onboarding
|
||||
|
||||
|
||||
def test_chat_id_command_updates_project_chat_id(monkeypatch, tmp_path) -> None:
|
||||
config_path = tmp_path / "takopi.toml"
|
||||
config_path.write_text(
|
||||
'[projects.z80]\npath = "/tmp/repo"\n',
|
||||
encoding="utf-8",
|
||||
)
|
||||
monkeypatch.setattr("takopi.config.HOME_CONFIG_PATH", config_path)
|
||||
monkeypatch.setattr(cli, "_load_settings_optional", lambda: (None, None))
|
||||
|
||||
def _capture(*, token: str | None = None):
|
||||
assert token == "token"
|
||||
return onboarding.ChatInfo(
|
||||
chat_id=123,
|
||||
username=None,
|
||||
title="takopi",
|
||||
first_name=None,
|
||||
last_name=None,
|
||||
chat_type="supergroup",
|
||||
)
|
||||
|
||||
monkeypatch.setattr(cli.onboarding, "capture_chat_id", _capture)
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(
|
||||
cli.create_app(),
|
||||
["chat-id", "--token", "token", "--project", "z80"],
|
||||
)
|
||||
|
||||
assert result.exit_code == 0
|
||||
saved = config_path.read_text(encoding="utf-8")
|
||||
assert "chat_id = 123" in saved
|
||||
assert "updated projects.z80.chat_id = 123" in result.output
|
||||
|
||||
|
||||
def test_chat_id_command_uses_config_token(monkeypatch) -> None:
|
||||
settings = TakopiSettings.model_validate(
|
||||
{
|
||||
"transport": "telegram",
|
||||
"transports": {"telegram": {"bot_token": "config-token"}},
|
||||
}
|
||||
)
|
||||
monkeypatch.setattr(cli, "_load_settings_optional", lambda: (settings, Path("x")))
|
||||
|
||||
def _capture(*, token: str | None = None):
|
||||
assert token == "config-token"
|
||||
return onboarding.ChatInfo(
|
||||
chat_id=321,
|
||||
username=None,
|
||||
title="takopi",
|
||||
first_name=None,
|
||||
last_name=None,
|
||||
chat_type="supergroup",
|
||||
)
|
||||
|
||||
monkeypatch.setattr(cli.onboarding, "capture_chat_id", _capture)
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli.create_app(), ["chat-id"])
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "chat_id = 321" in result.output
|
||||
Reference in New Issue
Block a user