Make menu clickable
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user