@Test
  void closeStageSuccess() {
    robot.interact(() -> {
      workbench.openModule(first);
      workbench.openModule(second);

      // simulate closing of the stage by pressing the X of the application
      closeStage();

      // all open modules should get closed before the application ends
      InOrder inOrder = inOrder(first, second);
      // Call: workbench.openModule(first)
      inOrder.verify(first).init(workbench);
      inOrder.verify(first).activate();
      // Call: workbench.openModule(second)
      inOrder.verify(first).deactivate();
      inOrder.verify(second).init(workbench);
      inOrder.verify(second).activate();

      // Effects caused by "Workbench#setupCleanup" -> setOnCloseRequest
      // Implicit Call: workbench.closeModule(first)
      inOrder.verify(first, never()).deactivate();
      inOrder.verify(first).destroy();
      // Implicit Call: workbench.closeModule(second)
      inOrder.verify(second).deactivate();
      inOrder.verify(second).destroy();

      ignoreModuleGetters(first, second);
      verifyNoMoreInteractions(first, second);

      assertEquals(0, workbench.getOpenModules().size());
    });
  }
Test for {@link Workbench#setupCleanup()}.
Simulates all modules returning {@code true} when
{@link WorkbenchModule#destroy()} is being called on them during the cleanup.
workbenchfx-core/src/test/java/com/dlsc/workbenchfx/WorkbenchTest.java