package com.faforever.client.notification; import com.faforever.client.preferences.NotificationsPrefs; import com.faforever.client.preferences.Preferences; import com.faforever.client.preferences.PreferencesService; import com.faforever.client.preferences.ToastPosition; import com.faforever.client.test.AbstractPlainJavaFxTest; import javafx.geometry.Pos; import javafx.scene.layout.Pane; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.springframework.context.ApplicationContext; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class TransientNotificationsControllerTest extends AbstractPlainJavaFxTest { private TransientNotificationsController instance; @Mock private PreferencesService preferencesService; @Mock private Preferences preferences; @Mock private NotificationsPrefs notificationPrefs; @Mock private ApplicationContext applicationContext; @Before public void setUp() throws Exception { instance = loadController("transient_notifications.fxml"); instance.preferencesService = preferencesService; instance.applicationContext = applicationContext; when(preferencesService.getPreferences()).thenReturn(preferences); when(preferences.getNotification()).thenReturn(notificationPrefs); } @Test public void testToastPositionTopLeft() throws Exception { when(notificationPrefs.getToastPosition()).thenReturn(ToastPosition.TOP_LEFT); instance.postConstruct(); assertThat(instance.transientNotificationsRoot.getAlignment(), is(Pos.TOP_LEFT)); } @Test public void testToastPositionTopRight() throws Exception { when(notificationPrefs.getToastPosition()).thenReturn(ToastPosition.TOP_RIGHT); instance.postConstruct(); assertThat(instance.transientNotificationsRoot.getAlignment(), is(Pos.TOP_RIGHT)); } @Test public void testToastPositionBottomRight() throws Exception { when(notificationPrefs.getToastPosition()).thenReturn(ToastPosition.BOTTOM_RIGHT); instance.postConstruct(); assertThat(instance.transientNotificationsRoot.getAlignment(), is(Pos.BOTTOM_RIGHT)); } @Test public void testToastPositionBottomLeft() throws Exception { when(notificationPrefs.getToastPosition()).thenReturn(ToastPosition.BOTTOM_LEFT); instance.postConstruct(); assertThat(instance.transientNotificationsRoot.getAlignment(), is(Pos.BOTTOM_LEFT)); } @Test public void testGetRoot() throws Exception { assertThat(instance.getRoot(), is(instance.transientNotificationsRoot)); assertThat(instance.getRoot().getParent(), is(nullValue())); } @Test public void testAddNotification() throws Exception { TransientNotificationController controller = mock(TransientNotificationController.class); when(controller.getRoot()).thenReturn(new Pane()).thenReturn(new Pane()); when(applicationContext.getBean(TransientNotificationController.class)).thenReturn(controller); TransientNotification notification1 = new TransientNotification("title1", "text1"); instance.addNotification(notification1); TransientNotification notification2 = new TransientNotification("title2", "text2"); instance.addNotification(notification2); assertThat(instance.transientNotificationsRoot.getChildren(), hasSize(2)); verify(controller).setNotification(notification1); verify(controller).setNotification(notification2); } }