Make menu clickable

This commit is contained in:
pleb
2026-07-11 16:02:38 -07:00
parent 861ce587f3
commit bcfada09f9
2 changed files with 86 additions and 3 deletions
+37
View File
@@ -2636,6 +2636,43 @@ class PluginHelperTuiTests(unittest.IsolatedAsyncioTestCase):
self.assertNotIn("example", updated["plugins"])
self.assertIn("example", updated["disabledPlugins"])
async def test_click_toggles_plugin_like_space(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
app, instance, state = _make_two_plugin_tui_fixture(Path(tmp))
async with app.run_test() as pilot:
table = app.query_one(DataTable)
self.assertEqual(table.row_count, 2)
self.assertEqual(app.plugin_rows[0]["status"], "enabled")
# Header is y=0; first data row is y=1. Click the second plugin row.
await pilot.click(DataTable, offset=(2, 2))
await pilot.pause()
self.assertEqual(table.cursor_row, 1)
self.assertEqual(app.plugin_rows[1]["id"], "beta")
self.assertEqual(app.plugin_rows[1]["status"], "disabled")
self.assertFalse((instance / "Plugins" / "Beta.dll").exists())
self.assertTrue((instance / "Plugins" / "Alpha.dll").exists())
updated = load_installed_state(state, "1.40.8", install_id=app.choices[0].install_id)
self.assertNotIn("beta", updated["plugins"])
self.assertIn("beta", updated["disabledPlugins"])
self.assertIn("alpha", updated["plugins"])
async def test_click_toggles_already_selected_plugin(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
app, instance, state = _make_tui_fixture(Path(tmp))
async with app.run_test() as pilot:
self.assertEqual(app.plugin_rows[0]["status"], "enabled")
await pilot.click(DataTable, offset=(2, 1))
await pilot.pause()
self.assertEqual(app.plugin_rows[0]["status"], "disabled")
self.assertFalse((instance / "Plugins" / "Example.dll").exists())
updated = load_installed_state(state, "1.40.8", install_id=app.choices[0].install_id)
self.assertNotIn("example", updated["plugins"])
self.assertIn("example", updated["disabledPlugins"])
async def test_space_toggle_keeps_cursor_on_selected_plugin(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
app, instance, _state = _make_two_plugin_tui_fixture(Path(tmp))