Fix loading of local Sones without posts and replies.
[Sone.git] / src / test / java / net / pterodactylus / sone / core / ConfigurationSoneParserTest.java
index c8742c2..0df4836 100644 (file)
@@ -22,12 +22,12 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
 
 import net.pterodactylus.sone.TestAlbumBuilder;
 import net.pterodactylus.sone.TestImageBuilder;
 import net.pterodactylus.sone.TestPostBuilder;
 import net.pterodactylus.sone.TestPostReplyBuilder;
+import net.pterodactylus.sone.TestValue;
 import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidAlbumFound;
 import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidImageFound;
 import net.pterodactylus.sone.core.ConfigurationSoneParser.InvalidParentAlbumFound;
@@ -48,8 +48,6 @@ import net.pterodactylus.sone.database.PostBuilderFactory;
 import net.pterodactylus.sone.database.PostReplyBuilder;
 import net.pterodactylus.sone.database.PostReplyBuilderFactory;
 import net.pterodactylus.util.config.Configuration;
-import net.pterodactylus.util.config.ConfigurationException;
-import net.pterodactylus.util.config.Value;
 
 import com.google.common.base.Optional;
 import org.hamcrest.Matchers;
@@ -71,13 +69,13 @@ public class ConfigurationSoneParserTest {
        public ConfigurationSoneParserTest() {
                when(sone.getId()).thenReturn("1");
                configurationSoneParser =
-                               new ConfigurationSoneParser(configuration, sone);
+                               new ConfigurationSoneParser(configuration, "1");
        }
 
        @Test
        public void emptyProfileIsLoadedCorrectly() {
                setupEmptyProfile();
-               Profile profile = configurationSoneParser.parseProfile();
+               Profile profile = configurationSoneParser.parseProfile(sone);
                assertThat(profile, notNullValue());
                assertThat(profile.getFirstName(), nullValue());
                assertThat(profile.getMiddleName(), nullValue());
@@ -90,15 +88,15 @@ public class ConfigurationSoneParserTest {
 
        private void setupEmptyProfile() {
                when(configuration.getStringValue(anyString())).thenReturn(
-                               new TestValue<String>(null));
+                               TestValue.<String>from(null));
                when(configuration.getIntValue(anyString())).thenReturn(
-                               new TestValue<Integer>(null));
+                               TestValue.<Integer>from(null));
        }
 
        @Test
        public void filledProfileWithFieldsIsParsedCorrectly() {
                setupFilledProfile();
-               Profile profile = configurationSoneParser.parseProfile();
+               Profile profile = configurationSoneParser.parseProfile(sone);
                assertThat(profile, notNullValue());
                assertThat(profile.getFirstName(), is("First"));
                assertThat(profile.getMiddleName(), is("M."));
@@ -130,12 +128,12 @@ public class ConfigurationSoneParserTest {
 
        private void setupString(String nodeName, String value) {
                when(configuration.getStringValue(eq(nodeName))).thenReturn(
-                               new TestValue<String>(value));
+                               TestValue.from(value));
        }
 
        private void setupInteger(String nodeName, Integer value) {
                when(configuration.getIntValue(eq(nodeName))).thenReturn(
-                               new TestValue<Integer>(value));
+                               TestValue.from(value));
        }
 
        @Test
@@ -182,7 +180,7 @@ public class ConfigurationSoneParserTest {
 
        private void setupLong(String nodeName, Long value) {
                when(configuration.getLongValue(eq(nodeName))).thenReturn(
-                               new TestValue<Long>(value));
+                               TestValue.from(value));
        }
 
        @Test(expected = InvalidPostFound.class)
@@ -332,7 +330,7 @@ public class ConfigurationSoneParserTest {
                AlbumBuilderFactory albumBuilderFactory = createAlbumBuilderFactory();
                List<Album> topLevelAlbums =
                                configurationSoneParser.parseTopLevelAlbums(
-                                               albumBuilderFactory);
+                                               albumBuilderFactory, sone);
                assertThat(topLevelAlbums, hasSize(2));
                Album firstAlbum = topLevelAlbums.get(0);
                assertThat(firstAlbum, isAlbum("A1", null, "T1", "D1", "I1"));
@@ -383,30 +381,30 @@ public class ConfigurationSoneParserTest {
        public void albumWithInvalidTitleIsRecognized() {
                setupAlbum(0, "A1", null, null, "D1", "I1");
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidAlbumFound.class)
        public void albumWithInvalidDescriptionIsRecognized() {
                setupAlbum(0, "A1", null, "T1", null, "I1");
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidParentAlbumFound.class)
        public void albumWithInvalidParentIsRecognized() {
                setupAlbum(0, "A1", "A0", "T1", "D1", "I1");
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
        }
 
        @Test
        public void imagesAreParsedCorrectly() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImages();
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
                Map<String, Album> albums = configurationSoneParser.getAlbums();
                assertThat(albums.get("A1").getImages(),
                                contains(isImage("I1", 1000L, "K1", "T1", "D1", 16, 9)));
@@ -455,98 +453,72 @@ public class ConfigurationSoneParserTest {
        public void missingAlbumIdIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", null, 1000L, "K1", "T1", "D1", 16, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidParentAlbumFound.class)
        public void invalidAlbumIdIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A4", 1000L, "K1", "T1", "D1", 16, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidImageFound.class)
        public void missingCreationTimeIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A1", null, "K1", "T1", "D1", 16, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidImageFound.class)
        public void missingKeyIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A1", 1000L, null, "T1", "D1", 16, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidImageFound.class)
        public void missingTitleIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A1", 1000L, "K1", null, "D1", 16, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidImageFound.class)
        public void missingDescriptionIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A1", 1000L, "K1", "T1", null, 16, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidImageFound.class)
        public void missingWidthIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A1", 1000L, "K1", "T1", "D1", null, 9);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
        @Test(expected = InvalidImageFound.class)
        public void missingHeightIsRecognized() {
                setupTopLevelAlbums();
                configurationSoneParser.parseTopLevelAlbums(
-                               createAlbumBuilderFactory());
+                               createAlbumBuilderFactory(), sone);
                setupImage(0, "I1", "A1", 1000L, "K1", "T1", "D1", 16, null);
-               configurationSoneParser.parseImages(createImageBuilderFactory());
-       }
-
-       private static class TestValue<T> implements Value<T> {
-
-               private final AtomicReference<T> value = new AtomicReference<T>();
-
-               public TestValue(T originalValue) {
-                       value.set(originalValue);
-               }
-
-               @Override
-               public T getValue() throws ConfigurationException {
-                       return value.get();
-               }
-
-               @Override
-               public T getValue(T defaultValue) {
-                       final T realValue = value.get();
-                       return (realValue != null) ? realValue : defaultValue;
-               }
-
-               @Override
-               public void setValue(T newValue) throws ConfigurationException {
-                       value.set(newValue);
-               }
-
+               configurationSoneParser.parseImages(createImageBuilderFactory(), sone);
        }
 
 }