from gpu_rent.prompts import MenuItem, prompt_menu, resolve_menu_choice def test_resolve_by_number(): items = [MenuItem("a", "A"), MenuItem("b", "B"), MenuItem("keep", "K")] assert resolve_menu_choice("2", items, default_key="keep") == "b" assert resolve_menu_choice("", items, default_key="keep") == "keep" assert resolve_menu_choice("keep", items, default_key="a") == "keep" def test_prompt_menu_prints_and_picks(): items = [ MenuItem("recommended", "rec"), MenuItem("light", "lit"), MenuItem("keep", "keep yaml"), ] shown: list[str] = [] def ask(msg: str, default: str = "") -> str: assert default == "3" # keep is default return "1" key = prompt_menu( "GGUF", items, default="keep", ask=ask, show=shown.append, ) assert key == "recommended" assert any("1. rec" in line for line in shown) assert any("←" in line for line in shown)