91120fb0ed7a26714df45e88cfbb54870e9776db
[Sone.git] / src / test / java / net / pterodactylus / sone / core / PreferencesLoaderTest.java
1 package net.pterodactylus.sone.core;
2
3 import static net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired.WRITING;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.hamcrest.Matchers.is;
6 import static org.mockito.Mockito.mock;
7 import static org.mockito.Mockito.when;
8
9 import net.pterodactylus.sone.TestValue;
10 import net.pterodactylus.util.config.Configuration;
11
12 import com.google.common.eventbus.EventBus;
13 import org.junit.Before;
14 import org.junit.Test;
15
16 /**
17  * Unit test for {@link PreferencesLoader}.
18  *
19  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
20  */
21 public class PreferencesLoaderTest {
22
23         private final EventBus eventBus = mock(EventBus.class);
24         private final Preferences preferences = new Preferences(eventBus);
25         private final Configuration configuration = mock(Configuration.class);
26         private final PreferencesLoader preferencesLoader =
27                         new PreferencesLoader(preferences);
28
29         @Before
30         public void setupConfiguration() {
31                 setupIntValue("InsertionDelay", 15);
32                 setupIntValue("PostsPerPage", 25);
33                 setupIntValue("ImagesPerPage", 12);
34                 setupIntValue("CharactersPerPost", 150);
35                 setupIntValue("PostCutOffLength", 300);
36                 setupBooleanValue("RequireFullAccess", true);
37                 setupIntValue("PositiveTrust", 50);
38                 setupIntValue("NegativeTrust", -50);
39                 when(configuration.getStringValue("Option/TrustComment")).thenReturn(
40                                 new TestValue<String>("Trusted"));
41                 setupBooleanValue("ActivateFcpInterface", true);
42                 setupIntValue("FcpFullAccessRequired", 1);
43         }
44
45         private void setupIntValue(String optionName, int value) {
46                 when(configuration.getIntValue("Option/" + optionName)).thenReturn(
47                                 new TestValue<Integer>(value));
48         }
49
50         private void setupBooleanValue(String optionName, boolean value) {
51                 when(configuration.getBooleanValue(
52                                 "Option/" + optionName)).thenReturn(
53                                 new TestValue<Boolean>(value));
54         }
55
56         @Test
57         public void configurationIsLoadedCorrectly() {
58                 setupConfiguration();
59                 preferencesLoader.loadFrom(configuration);
60                 assertThat(preferences.getInsertionDelay(), is(15));
61                 assertThat(preferences.getPostsPerPage(), is(25));
62                 assertThat(preferences.getImagesPerPage(), is(12));
63                 assertThat(preferences.getCharactersPerPost(), is(150));
64                 assertThat(preferences.getPostCutOffLength(), is(300));
65                 assertThat(preferences.isRequireFullAccess(), is(true));
66                 assertThat(preferences.getPositiveTrust(), is(50));
67                 assertThat(preferences.getNegativeTrust(), is(-50));
68                 assertThat(preferences.getTrustComment(), is("Trusted"));
69                 assertThat(preferences.isFcpInterfaceActive(), is(true));
70                 assertThat(preferences.getFcpFullAccessRequired(), is(WRITING));
71         }
72
73 }