feat: onboarding overhaul, persona-based setup (#132)
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
from pathlib import Path
|
||||
|
||||
from typer.testing import CliRunner
|
||||
|
||||
from takopi import cli
|
||||
from takopi.settings import TakopiSettings
|
||||
|
||||
|
||||
def _settings() -> TakopiSettings:
|
||||
return TakopiSettings.model_validate(
|
||||
{
|
||||
"transport": "telegram",
|
||||
"transports": {"telegram": {"bot_token": "token", "chat_id": 123}},
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def test_doctor_ok(monkeypatch) -> None:
|
||||
settings = _settings()
|
||||
monkeypatch.setattr(cli, "load_settings", lambda: (settings, Path("x")))
|
||||
monkeypatch.setattr(cli, "resolve_plugins_allowlist", lambda _settings: None)
|
||||
monkeypatch.setattr(cli, "list_backend_ids", lambda allowlist=None: ["codex"])
|
||||
|
||||
async def _fake_checks(*_args, **_kwargs):
|
||||
return [cli.DoctorCheck("telegram token", "ok", "@bot")]
|
||||
|
||||
monkeypatch.setattr(cli, "_doctor_telegram_checks", _fake_checks)
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli.create_app(), ["doctor"])
|
||||
|
||||
assert result.exit_code == 0
|
||||
assert "takopi doctor" in result.output
|
||||
assert "telegram token: ok" in result.output
|
||||
|
||||
|
||||
def test_doctor_errors_exit_nonzero(monkeypatch) -> None:
|
||||
settings = _settings()
|
||||
monkeypatch.setattr(cli, "load_settings", lambda: (settings, Path("x")))
|
||||
monkeypatch.setattr(cli, "resolve_plugins_allowlist", lambda _settings: None)
|
||||
monkeypatch.setattr(cli, "list_backend_ids", lambda allowlist=None: ["codex"])
|
||||
|
||||
async def _fake_checks(*_args, **_kwargs):
|
||||
return [cli.DoctorCheck("telegram token", "error", "bad token")]
|
||||
|
||||
monkeypatch.setattr(cli, "_doctor_telegram_checks", _fake_checks)
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(cli.create_app(), ["doctor"])
|
||||
|
||||
assert result.exit_code == 1
|
||||
assert "telegram token: error" in result.output
|
||||
Reference in New Issue
Block a user