package com.uwsoft.editor.view.ui.dialog; import com.badlogic.gdx.Gdx; import com.kotcrab.vis.ui.VisUI; import com.kotcrab.vis.ui.widget.VisTextButton; import com.puremvc.patterns.mediator.Mediator; import com.puremvc.patterns.observer.Notification; import com.runner.LibgdxRunner; import com.runner.NeedGL; import com.runner.util.UIHelper; import com.uwsoft.editor.Overlap2DFacade; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.assertThat; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @RunWith(LibgdxRunner.class) public class ExportSettingsDialogTest { private ExportSettingsDialog exportSettingsDialog; @Before public void setUp() throws Exception { exportSettingsDialog = new ExportSettingsDialog(); } @Test @NeedGL public void shouldSendExportInformationAfterClickButton() throws Exception { Mediator mediator = mock(Mediator.class); given(mediator.getMediatorName()).willReturn(ExportSettingsDialog.SAVE_SETTINGS_AND_EXPORT_BTN_CLICKED); given(mediator.listNotificationInterests()).willReturn(new String[]{ExportSettingsDialog.SAVE_SETTINGS_AND_EXPORT_BTN_CLICKED}); Overlap2DFacade.getInstance().registerMediator(mediator); VisTextButton visTextButton = UIHelper.findActorByText(exportSettingsDialog, "Save Settings and Export", VisTextButton.class); assertThat(visTextButton.getListeners().size, is(3)); UIHelper.invokeClickableActor(visTextButton); ArgumentCaptor<Notification> argument = ArgumentCaptor.forClass(Notification.class); verify(mediator).handleNotification(argument.capture()); assertThat(argument.getValue().getName(), is(ExportSettingsDialog.SAVE_SETTINGS_AND_EXPORT_BTN_CLICKED)); assertThat(argument.getValue().getBody(), not(nullValue())); } }