package com.faforever.client.fx;
import com.faforever.client.preferences.Preferences;
import com.faforever.client.preferences.PreferencesService;
import com.faforever.client.test.AbstractPlainJavaFxTest;
import javafx.scene.control.Alert;
import javafx.scene.control.DialogPane;
import org.junit.Before;
import org.junit.Test;
import org.testfx.util.WaitForAsyncUtils;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import static org.junit.Assert.*;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class DialogFactoryImplTest extends AbstractPlainJavaFxTest {
private static final long TIMEOUT = 5000;
private DialogFactoryImpl instance;
@Before
public void setUp() throws Exception {
instance = new DialogFactoryImpl();
instance.fxmlLoader = mock(FxmlLoader.class);
instance.preferencesService = mock(PreferencesService.class);
when(instance.preferencesService.getPreferences()).thenReturn(mock(Preferences.class));
}
@Test
public void testCreateAlert() throws Exception {
DialogPane pane = new DialogPane();
when(instance.fxmlLoader.loadAndGetRoot("dialog.fxml")).thenReturn(pane);
CompletableFuture<Alert> serviceStateDoneFuture = new CompletableFuture<>();
WaitForAsyncUtils.waitForAsyncFx(TIMEOUT, () -> {
Alert alert = instance.createAlert(Alert.AlertType.CONFIRMATION, "text");
serviceStateDoneFuture.complete(alert);
});
Alert alert = serviceStateDoneFuture.get(TIMEOUT, TimeUnit.MILLISECONDS);
assertNotNull(alert);
assertEquals(pane, alert.getDialogPane());
}
}