package games.strategy.engine.framework.map.download;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import games.strategy.engine.framework.map.download.MapDownloadController.TutorialMapPreferences;
import games.strategy.engine.framework.map.download.MapDownloadController.UserMaps;
@RunWith(MockitoJUnitRunner.class)
public final class MapDownloadControllerTest {
@Mock
private TutorialMapPreferences tutorialMapPreferences;
@Mock
private UserMaps userMaps;
@Test
public void testShouldPromptToDownloadTutorialMap_ShouldReturnTrueWhenCanPromptToDownloadAndUserMapsIsEmpty() {
when(tutorialMapPreferences.canPromptToDownload()).thenReturn(true);
when(userMaps.isEmpty()).thenReturn(true);
assertThat(shouldPromptToDownloadTutorialMap(), is(true));
}
private boolean shouldPromptToDownloadTutorialMap() {
return MapDownloadController.shouldPromptToDownloadTutorialMap(tutorialMapPreferences, userMaps);
}
@Test
public void testShouldPromptToDownloadTutorialMap_ShouldReturnFalseWhenCanPromptToDownloadAndUserMapsIsNotEmpty() {
when(tutorialMapPreferences.canPromptToDownload()).thenReturn(true);
when(userMaps.isEmpty()).thenReturn(false);
assertThat(shouldPromptToDownloadTutorialMap(), is(false));
}
@Test
public void testShouldPromptToDownloadTutorialMap_ShouldReturnFalseWhenCannotPromptToDownload() {
when(tutorialMapPreferences.canPromptToDownload()).thenReturn(false);
assertThat(shouldPromptToDownloadTutorialMap(), is(false));
}
@Test
public void testPreventPromptToDownloadTutorialMap_ShouldChangePreventPromptToDownloadPreference() {
preventPromptToDownloadTutorialMap();
verify(tutorialMapPreferences).preventPromptToDownload();
}
private void preventPromptToDownloadTutorialMap() {
MapDownloadController.preventPromptToDownloadTutorialMap(tutorialMapPreferences);
}
}