Skip to content

Instantly share code, notes, and snippets.

@robintw
Created October 8, 2021 20:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save robintw/b3733b6f67d0d2299b409ad04e2f84f0 to your computer and use it in GitHub Desktop.
Save robintw/b3733b6f67d0d2299b409ad04e2f84f0 to your computer and use it in GitHub Desktop.
async def test_select_platform_type(test_datastore):
# Test application in a dummy session.
input = DummyInput()
# output = DummyOutput()
output = None
with create_app_session(output=output, input=input):
gui = MaintenanceGUI(test_datastore)
# Run the application.
# We run it by scheduling the run_async coroutine in the current event
# loop.
task = asyncio.create_task(gui.app.run_async())
ready_event = asyncio.Event()
gui.app.after_render += lambda _: ready_event.set()
await ready_event.wait()
# Send F1 to open the help dialog
gui.app.key_processor.feed(KeyPress(Keys.F1))
gui.app.key_processor.process_keys()
await asyncio.sleep(2)
# Check the help dialog has opened
assert isinstance(gui.current_dialog, HelpDialog)
# Send Tab and Enter to exit the help dialog
gui.app.key_processor.feed(KeyPress(Keys.Tab, "\t"))
gui.app.key_processor.feed(KeyPress(Keys.ControlM, "\r"))
gui.app.key_processor.process_keys()
await asyncio.sleep(2)
# Check no dialog is open
assert gui.current_dialog is None
# Send ESC to open the 'Do you want to exit?' dialog
gui.app.key_processor.feed(KeyPress(Keys.Escape))
gui.app.key_processor.process_keys()
await asyncio.sleep(2)
# Send Enter to say yes
gui.app.key_processor.feed(KeyPress(Keys.ControlM, "\r"))
gui.app.key_processor.process_keys()
# Wait for the application to properly terminate.
await task
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment