55b66eec5a8b437796e5a2f9ed6911ff02db3de2
[Sone.git] / src / test / java / net / pterodactylus / sone / database / memory / ConfigurationLoaderTest.java
1 package net.pterodactylus.sone.database.memory;
2
3 import static java.util.Arrays.asList;
4 import static org.hamcrest.MatcherAssert.assertThat;
5 import static org.hamcrest.Matchers.containsInAnyOrder;
6 import static org.hamcrest.Matchers.nullValue;
7 import static org.mockito.Mockito.mock;
8 import static org.mockito.Mockito.when;
9
10 import java.util.HashSet;
11 import java.util.Set;
12
13 import net.pterodactylus.sone.TestValue;
14 import net.pterodactylus.util.config.Configuration;
15 import net.pterodactylus.util.config.ConfigurationException;
16
17 import org.junit.Test;
18
19 /**
20  * Unit test for {@link ConfigurationLoader}.
21  *
22  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
23  */
24 public class ConfigurationLoaderTest {
25
26         private final Configuration configuration = mock(Configuration.class);
27         private final ConfigurationLoader configurationLoader =
28                         new ConfigurationLoader(configuration);
29
30         @Test
31         public void loaderCanLoadKnownPosts() {
32                 when(configuration.getStringValue("KnownPosts/0/ID"))
33                                 .thenReturn(new TestValue<String>("Post2"));
34                 when(configuration.getStringValue("KnownPosts/1/ID"))
35                                 .thenReturn(new TestValue<String>("Post1"));
36                 when(configuration.getStringValue("KnownPosts/2/ID"))
37                                 .thenReturn(new TestValue<String>(null));
38                 Set<String> knownPosts = configurationLoader.loadKnownPosts();
39                 assertThat(knownPosts, containsInAnyOrder("Post1", "Post2"));
40         }
41
42         @Test
43         public void loaderCanLoadKnownPostReplies() {
44                 when(configuration.getStringValue("KnownReplies/0/ID"))
45                                 .thenReturn(new TestValue<String>("PostReply2"));
46                 when(configuration.getStringValue("KnownReplies/1/ID"))
47                                 .thenReturn(new TestValue<String>("PostReply1"));
48                 when(configuration.getStringValue("KnownReplies/2/ID"))
49                                 .thenReturn(new TestValue<String>(null));
50                 Set<String> knownPosts = configurationLoader.loadKnownPostReplies();
51                 assertThat(knownPosts,
52                                 containsInAnyOrder("PostReply1", "PostReply2"));
53         }
54
55         @Test
56         public void loaderCanLoadBookmarkedPosts() {
57                 when(configuration.getStringValue("Bookmarks/Post/0/ID"))
58                                 .thenReturn(new TestValue<String>("Post2"));
59                 when(configuration.getStringValue("Bookmarks/Post/1/ID"))
60                                 .thenReturn(new TestValue<String>("Post1"));
61                 when(configuration.getStringValue("Bookmarks/Post/2/ID"))
62                                 .thenReturn(new TestValue<String>(null));
63                 Set<String> knownPosts = configurationLoader.loadBookmarkedPosts();
64                 assertThat(knownPosts, containsInAnyOrder("Post1", "Post2"));
65         }
66
67         @Test
68         public void loaderCanSaveBookmarkedPosts() throws ConfigurationException {
69                 final TestValue<String> post1 = new TestValue<String>(null);
70                 final TestValue<String> post2 = new TestValue<String>(null);
71                 final TestValue<String> post3 = new TestValue<String>(null);
72                 when(configuration.getStringValue("Bookmarks/Post/0/ID"))
73                                 .thenReturn(post1);
74                 when(configuration.getStringValue("Bookmarks/Post/1/ID"))
75                                 .thenReturn(post2);
76                 when(configuration.getStringValue("Bookmarks/Post/2/ID"))
77                                 .thenReturn(post3);
78                 HashSet<String> originalPosts =
79                                 new HashSet<String>(asList("Post1", "Post2"));
80                 configurationLoader.saveBookmarkedPosts(originalPosts);
81                 HashSet<String> extractedPosts = new HashSet<String>(
82                                 asList(post1.getValue(), post2.getValue()));
83                 assertThat(extractedPosts, containsInAnyOrder("Post1", "Post2"));
84                 assertThat(post3.getValue(), nullValue());
85         }
86
87 }