X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FRenderFilterTest.java;fp=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ftemplate%2FRenderFilterTest.java;h=a600cdd2b25215d36ed3bc0ce925982132eb0e4d;hb=5777a17f983636923bc2231daec8d0383955d1f5;hp=0000000000000000000000000000000000000000;hpb=616d826774d0ac43e1152ec6a4f5c3c198b95483;p=Sone.git
diff --git a/src/test/java/net/pterodactylus/sone/template/RenderFilterTest.java b/src/test/java/net/pterodactylus/sone/template/RenderFilterTest.java
new file mode 100644
index 0000000..a600cdd
--- /dev/null
+++ b/src/test/java/net/pterodactylus/sone/template/RenderFilterTest.java
@@ -0,0 +1,172 @@
+package net.pterodactylus.sone.template;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import net.pterodactylus.sone.core.Core;
+import net.pterodactylus.sone.data.Album;
+import net.pterodactylus.sone.data.Post;
+import net.pterodactylus.sone.data.Profile;
+import net.pterodactylus.sone.data.Sone;
+import net.pterodactylus.sone.text.AlbumPart;
+import net.pterodactylus.sone.text.FreenetLinkPart;
+import net.pterodactylus.sone.text.LinkPart;
+import net.pterodactylus.sone.text.Part;
+import net.pterodactylus.sone.text.PlainTextPart;
+import net.pterodactylus.sone.text.PostPart;
+import net.pterodactylus.sone.text.SonePart;
+import net.pterodactylus.util.template.HtmlFilter;
+import net.pterodactylus.util.template.TemplateContext;
+import net.pterodactylus.util.template.TemplateContextFactory;
+
+import com.google.common.collect.ImmutableMap;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Unit test for {@link RenderFilter}.
+ *
+ * @author David âBombeâ Roden
+ */
+public class RenderFilterTest {
+
+ private static final Map EMPTY_MAP = Collections.emptyMap();
+ private final Core core = mock(Core.class);
+ private final TemplateContextFactory templateContextFactory = new TemplateContextFactory();
+ private final RenderFilter renderFilter = new RenderFilter(core, templateContextFactory);
+ private final TemplateContext templateContext = new TemplateContext();
+ private final Sone sone = mock(Sone.class);
+ private final Post post = mock(Post.class);
+
+ @Before
+ public void setupTemplateContextFactory() {
+ templateContextFactory.addFilter("html", new HtmlFilter());
+ }
+
+ @Before
+ public void setupSone() {
+ when(sone.getId()).thenReturn("sone-id");
+ when(sone.getName()).thenReturn("SoneName");
+ when(sone.getProfile()).thenReturn(new Profile(sone));
+ }
+
+ @Before
+ public void setupPost() {
+ when(post.getId()).thenReturn("post-id");
+ when(post.getSone()).thenReturn(sone);
+ }
+
+ @Test
+ public void filterCanRenderPlainText() {
+ List parts = Arrays.asList(new PlainTextPart(""));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP), is((Object) "<Text>"));
+ }
+
+ @Test
+ public void filterCanRenderMultiplePlainTextParts() {
+ List parts = Arrays.asList(new PlainTextPart(""), new PlainTextPart(""));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP), is((Object) "<Text><Foo>"));
+ }
+
+ @Test
+ public void filterCanRenderUntrustedFreenetLinks() {
+ List parts = Arrays.asList(new FreenetLinkPart("SSK@foo,bar/baz", "foo/baz", false));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "foo/baz"));
+ }
+
+ @Test
+ public void filterCanRenderTrustedFreenetLinks() {
+ List parts = Arrays.asList(new FreenetLinkPart("SSK@foo,bar/baz", "foo/baz", true));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "foo/baz"));
+ }
+
+ @Test
+ public void filterCanRenderInternetLinks() {
+ List parts = Arrays.asList(new LinkPart("http://link.sone", "link.sone"));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "link.sone"));
+ }
+
+ @Test
+ public void filterCanRenderSonePartsForUnknownSones() {
+ Sone unknownSone = mock(Sone.class);
+ when(unknownSone.getId()).thenReturn("sone-id");
+ List parts = Arrays.asList(new SonePart(unknownSone));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "sone-id"));
+ }
+
+ @Test
+ public void filterCanRenderSonePartsForKnownSones() {
+ List parts = Arrays.asList(new SonePart(sone));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "SoneName"));
+ }
+
+ @Test
+ public void filterCanRenderPostParts() {
+ when(post.getText()).thenReturn("123456789012345678901234567890");
+ List parts = Arrays.asList(new PostPart(post));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "12345678901234567890…"));
+ }
+
+ @Test
+ public void filterCanRenderPostPartsWithoutBreakingWords() {
+ when(post.getText()).thenReturn("12345 12345 12345 12345 12345 12345");
+ List parts = Arrays.asList(new PostPart(post));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "12345 12345 12345…"));
+ }
+
+ @Test
+ public void filterCanRenderPostPartsWithShortText() {
+ when(post.getText()).thenReturn("12345 12345");
+ List parts = Arrays.asList(new PostPart(post));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "12345 12345"));
+ }
+
+ @Test
+ public void filterCanRenderPostPartsWithOldPostIds() {
+ when(post.getText()).thenReturn("12345 12345");
+ List parts = Arrays.asList(new PostPart(post, true));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "12345 12345"));
+ }
+
+ @Test
+ public void filterCanRenderAlbumParts() {
+ Album album = mock(Album.class);
+ when(album.getId()).thenReturn("album-id");
+ when(album.getTitle()).thenReturn("Title");
+ when(album.getDescription()).thenReturn("Description");
+ List parts = Arrays.asList(new AlbumPart(album));
+ assertThat(renderFilter.format(templateContext, parts, EMPTY_MAP),
+ is((Object) "Title"));
+ }
+
+ @Test
+ public void filterHonorsLength() {
+ List parts = Arrays.asList(new PlainTextPart("12345678901234567890"));
+ assertThat(renderFilter.format(templateContext, parts, ImmutableMap.of("length", "10")),
+ is((Object) "1234567890…"));
+ }
+
+ @Test
+ public void filterHonorsCutOffLength() {
+ List parts = Arrays.asList(new PlainTextPart("12345678901234567890"));
+ assertThat(renderFilter.format(templateContext, parts, ImmutableMap.of("length", "10", "cut-off-length", "5")),
+ is((Object) "12345…"));
+ }
+
+}