vibe/tests/onboarding/test_run_onboarding.py
Mathias Gesbert 661588de0c v1.1.3
Co-Authored-By: Quentin Torroba <quentin.torroba@mistral.ai>
Co-Authored-By: Michel Thomazo <michel.thomazo@mistral.ai>
Co-Authored-By: Vincent Guilloux <vincent.guilloux@mistral.ai>
2025-12-12 17:56:32 +01:00

60 lines
1.5 KiB
Python

from __future__ import annotations
from pathlib import Path
import sys
from typing import override
import pytest
from textual.app import App
from vibe.setup import onboarding
class StubApp(App[str | None]):
def __init__(self, return_value: str | None) -> None:
super().__init__()
self._return_value = return_value
@override
def run(self, *args: object, **kwargs: object) -> str | None:
return self._return_value
def _exit_raiser(code: int = 0) -> None:
raise SystemExit(code)
def test_exits_on_cancel(
monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str], tmp_path: Path
) -> None:
monkeypatch.setattr(sys, "exit", _exit_raiser)
with pytest.raises(SystemExit) as excinfo:
onboarding.run_onboarding(StubApp(None))
assert excinfo.value.code == 0
out = capsys.readouterr().out
assert "Setup cancelled. See you next time!" in out
def test_warns_on_save_error(
monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str], tmp_path: Path
) -> None:
monkeypatch.setattr(sys, "exit", _exit_raiser)
onboarding.run_onboarding(StubApp("save_error:disk full"))
out = capsys.readouterr().out
assert "Could not save API key" in out
assert "disk full" in out
def test_successfully_completes(
monkeypatch: pytest.MonkeyPatch, capsys: pytest.CaptureFixture[str], tmp_path: Path
) -> None:
monkeypatch.setattr(sys, "exit", _exit_raiser)
onboarding.run_onboarding(StubApp("completed"))
out = capsys.readouterr().out
assert out == ""