package net.pterodactylus.sone.core;
import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.WRITING;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.not;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import net.pterodactylus.sone.TestValue;
import net.pterodactylus.util.config.Configuration;
import com.google.common.eventbus.EventBus;
import org.junit.Before;
import org.junit.Test;
/**
* Unit test for {@link PreferencesLoader}.
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
public class PreferencesLoaderTest {
private final EventBus eventBus = mock(EventBus.class);
private final Preferences preferences = new Preferences(eventBus);
private final Configuration configuration = mock(Configuration.class);
private final PreferencesLoader preferencesLoader =
new PreferencesLoader(preferences);
@Before
public void setupConfiguration() {
setupIntValue("InsertionDelay", 15);
setupIntValue("PostsPerPage", 25);
setupIntValue("ImagesPerPage", 12);
setupIntValue("CharactersPerPost", 150);
setupIntValue("PostCutOffLength", 300);
setupBooleanValue("RequireFullAccess", true);
setupIntValue("PositiveTrust", 50);
setupIntValue("NegativeTrust", -50);
when(configuration.getStringValue("Option/TrustComment")).thenReturn(
TestValue.from("Trusted"));
setupBooleanValue("ActivateFcpInterface", true);
setupIntValue("FcpFullAccessRequired", 1);
}
private void setupIntValue(String optionName, int value) {
when(configuration.getIntValue("Option/" + optionName)).thenReturn(
TestValue.from(value));
}
private void setupBooleanValue(String optionName, boolean value) {
when(configuration.getBooleanValue(
"Option/" + optionName)).thenReturn(
TestValue.from(value));
}
@Test
public void configurationIsLoadedCorrectly() {
setupConfiguration();
preferencesLoader.loadFrom(configuration);
assertThat(preferences.getInsertionDelay(), is(15));
assertThat(preferences.getPostsPerPage(), is(25));
assertThat(preferences.getImagesPerPage(), is(12));
assertThat(preferences.getCharactersPerPost(), is(150));
assertThat(preferences.getPostCutOffLength(), is(300));
assertThat(preferences.isRequireFullAccess(), is(true));
assertThat(preferences.getPositiveTrust(), is(50));
assertThat(preferences.getNegativeTrust(), is(-50));
assertThat(preferences.getTrustComment(), is("Trusted"));
assertThat(preferences.isFcpInterfaceActive(), is(true));
assertThat(preferences.getFcpFullAccessRequired(), is(WRITING));
}
@Test
public void configurationIsLoadedCorrectlyWithCutOffLengthMinusOne() {
setupConfiguration();
setupIntValue("PostCutOffLength", -1);
preferencesLoader.loadFrom(configuration);
assertThat(preferences.getPostCutOffLength(), not(is(-1)));
}
}