### Question:
IdentityEditController extends AbstractController implements Initializable { public void onFinish(Runnable finishHandler) { this.finishHandler = finishHandler; }  @Override void initialize(URL location, ResourceBundle resources); void onFinish(Runnable finishHandler);  }### Answer:
@Test public void showsSpinnerOnUpload() throws Exception { controller.onFinish(lock::acquireUninterruptibly); new Thread(controller::saveIdentity).start(); waitUntil(controller.uploadProgress::isVisible); assertFalse(controller.saveIdentity.isVisible()); lock.release(); waitUntil(() -> !controller.uploadProgress.isVisible()); assertTrue(controller.saveIdentity.isVisible()); }