package com.faforever.client.mod;
import com.faforever.client.i18n.I18n;
import com.faforever.client.notification.NotificationService;
import com.faforever.client.reporting.ReportingService;
import com.faforever.client.test.AbstractPlainJavaFxTest;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.image.Image;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import java.util.function.Consumer;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.junit.Assert.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class ModTileControllerTest extends AbstractPlainJavaFxTest {
@Mock
public ModService modService;
@Mock
public NotificationService notificationService;
@Mock
public I18n i18n;
@Mock
public ReportingService reportingService;
private ModTileController instance;
@Before
public void setUp() throws Exception {
instance = loadController("mod_tile.fxml");
instance.modService = modService;
instance.notificationService = notificationService;
instance.i18n = i18n;
instance.reportingService = reportingService;
ObservableList<ModInfoBean> installedMods = FXCollections.observableArrayList();
when(modService.getInstalledMods()).thenReturn(installedMods);
}
@Test
public void testSetMod() throws Exception {
ModInfoBean mod = ModInfoBeanBuilder.create()
.defaultValues()
.name("Mod name")
.author("Mod author")
.thumbnailUrl(getClass().getResource("/theme/images/tray_icon.png").toExternalForm())
.get();
when(modService.loadThumbnail(mod)).thenReturn(new Image("/theme/images/tray_icon.png"));
instance.setMod(mod);
assertThat(instance.nameLabel.getText(), is("Mod name"));
assertThat(instance.authorLabel.getText(), is("Mod author"));
assertThat(instance.thumbnailImageView.getImage(), is(notNullValue()));
verify(modService).loadThumbnail(mod);
}
@Test
public void testSetModNoThumbnail() throws Exception {
ModInfoBean mod = ModInfoBeanBuilder.create()
.defaultValues()
.thumbnailUrl(null)
.get();
instance.setMod(mod);
assertThat(instance.thumbnailImageView.getImage(), notNullValue());
}
@Test
public void testGetRoot() throws Exception {
assertThat(instance.getRoot(), is(instance.modTileRoot));
assertThat(instance.getRoot().getParent(), is(nullValue()));
}
@Test
@SuppressWarnings("unchecked")
public void testShowModDetail() throws Exception {
Consumer<ModInfoBean> listener = mock(Consumer.class);
instance.setOnOpenDetailListener(listener);
instance.onShowModDetail();
verify(listener).accept(any());
}
}