DataSetDefEditorPresenter extends BaseEditor<DataSetDef, DefaultMetadata> { @Override protected void onValidate(final Command callFinished) { workflow.flush(); if (!workflow.hasErrors()) { notification.fire(new NotificationEvent(DataSetAuthoringConstants.INSTANCE.validationOk(), SUCCESS)); } else { notification.fire(new NotificationEvent(DataSetAuthoringConstants.INSTANCE.validationFailed(), ERROR)); } callFinished.execute(); }  @OnStartup void onStartup(final ObservablePath path,
                          final PlaceRequest place); @WorkbenchPartTitleDecoration IsWidget getTitle(); @WorkbenchPartTitle String getTitleText(); @WorkbenchMenu void getMenus(final Consumer<Menus> menusConsumer); @WorkbenchPartView Widget getWidget(); @OnMayClose boolean onMayClose(); @OnClose void onClose(); DataSetDef getDataSetDef(); int getCurrentModelHash(); void disposeWorkflow(); @Inject
    public DataSetDefScreenView view; }
@Test public void validateCallbackIsCalled() throws Exception { final Command command = mock(Command.class); presenter.onValidate(command); verify(command).execute(); }