def test_how_is_printed_the_menu(capsys): """🔬 expect the menu is printed correctly on the terminal (strict test)""" Menu().print_the_menu() out, err = capsys.readouterr() assert "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓" in out assert "┃ >>> What do you need from the installer ❓ ┃" in out assert "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩" in out assert "│ (C)heck the system requirements │" in out assert "│ (T)est miniK8s │" in out assert "│ (I)nstall miniK8s │" in out assert "│ (E)xit │" in out assert "└────────────────────────────────────────────┘" in out
def test_perform_the_action_exit(monkeypatch, capsys): """🔬 expect to spy an os.exit after selecting 'e' (Exit)""" monkeypatch.setattr("builtins.input", lambda _: "e") monkeypatch.setattr("os._exit", lambda _: print("Exit request caught.")) menu = Menu() menu.wait_the_answer() menu.perform_the_action() out, err = capsys.readouterr() assert "Exit request caught." in out assert "Goodbye!" in out
class Installer: def __init__(self): self.console = Console() self.menu = Menu() self.title = Title() def start(self, fake_action_class=None): self.title.print_welcome_message() self.menu.print_the_menu() self.menu.wait_the_answer() self.menu.perform_the_action(fake_action_class)
def __init__(self): self.console = Console() self.menu = Menu() self.title = Title()
def menu_after_user_selection(monkeypatch, user_selection): print(user_selection) monkeypatch.setattr("builtins.input", lambda _: user_selection) menu = Menu() menu.wait_the_answer() return menu
def invalid_user_selection_stdout(capsys, monkeypatch): monkeypatch.setattr("builtins.input", lambda _: "exit") Menu().wait_the_answer() out, err = capsys.readouterr() return out
def valid_user_selection_key_stroke(monkeypatch): monkeypatch.setattr("builtins.input", lambda _: "e") return Menu().wait_the_answer()
def menu() -> Menu: return Menu()