🎨 Replace Sinfest filter test with Kotlin version
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 24 Oct 2021 12:49:31 +0000 (14:49 +0200)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 24 Oct 2021 12:49:31 +0000 (14:49 +0200)
src/test/java/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.java [deleted file]
src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.kt [new file with mode: 0644]

diff --git a/src/test/java/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.java b/src/test/java/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.java
deleted file mode 100644 (file)
index aee1142..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-package net.pterodactylus.rhynodge.filters.comics;
-
-import java.io.IOException;
-
-import net.pterodactylus.rhynodge.Filter;
-import net.pterodactylus.rhynodge.State;
-import net.pterodactylus.rhynodge.filters.ResourceLoader;
-import net.pterodactylus.rhynodge.states.ComicState;
-import net.pterodactylus.rhynodge.states.ComicState.Comic;
-import net.pterodactylus.rhynodge.states.ComicState.Strip;
-import net.pterodactylus.rhynodge.states.HtmlState;
-
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
-import org.hamcrest.MatcherAssert;
-import org.hamcrest.Matchers;
-import org.hamcrest.TypeSafeDiagnosingMatcher;
-import org.jsoup.nodes.Document;
-import org.junit.Test;
-
-
-/**
- * Unit test for {@link SinfestComicFilter}.
- *
- * @author <a href="mailto:bombe@pterodactylus.net">David â€˜Bombe’ Roden</a>
- */
-public class SinfestComicFilterTest {
-
-       private final Filter sinfestFilter = new SinfestComicFilter();
-       private final HtmlState htmlState;
-
-       public SinfestComicFilterTest() throws IOException {
-               Document document = ResourceLoader.loadDocument(SinfestComicFilter.class, "sinfest.html", "https://sinfest.xyz/");
-               htmlState = new HtmlState("https://sinfest.xyz/", document);
-       }
-
-       @Test
-       public void canParseComicsFromHtml() {
-               State state = sinfestFilter.filter(htmlState);
-               MatcherAssert.assertThat(state, Matchers.instanceOf(ComicState.class));
-       }
-
-       @Test
-       public void imageUrlsAreParsedCorrectly() {
-               ComicState comicState = (ComicState) sinfestFilter.filter(htmlState);
-               MatcherAssert.assertThat(comicState.comics(), Matchers.contains(matchesComic("October 24, 2021: Unperson 33", "https://sinfest.xyz/btphp/comics/2021-10-24.jpg", "")));
-       }
-
-       private Matcher<Comic> matchesComic(String title, String url, String comment) {
-               return new TypeSafeDiagnosingMatcher<Comic>() {
-                       @Override
-                       protected boolean matchesSafely(Comic comic, Description mismatchDescription) {
-                               if (!comic.title().equals(title)) {
-                                       mismatchDescription.appendText("comic is named ").appendValue(comic.title());
-                                       return false;
-                               }
-                               if (comic.strips().size() != 1) {
-                                       mismatchDescription.appendText("comic has ").appendValue(comic.strips().size()).appendText(" strips");
-                                       return false;
-                               }
-                               Strip strip = comic.strips().get(0);
-                               if (!strip.imageUrl().equals(url)) {
-                                       mismatchDescription.appendText("image url is ").appendValue(strip.imageUrl());
-                                       return false;
-                               }
-                               if (!strip.comment().equals(comment)) {
-                                       mismatchDescription.appendText("comment is ").appendValue(strip.comment());
-                                       return false;
-                               }
-                               return true;
-                       }
-
-                       @Override
-                       public void describeTo(Description description) {
-                               description.appendText("comic named ").appendValue(title);
-                               description.appendText(" at ").appendValue(url);
-                               description.appendText(" with comment ").appendValue(comment);
-                       }
-               };
-       }
-
-}
diff --git a/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.kt b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.kt
new file mode 100644 (file)
index 0000000..92049ba
--- /dev/null
@@ -0,0 +1,38 @@
+package net.pterodactylus.rhynodge.filters.comics
+
+import net.pterodactylus.rhynodge.Filter
+import net.pterodactylus.rhynodge.filters.ResourceLoader
+import net.pterodactylus.rhynodge.states.ComicState
+import net.pterodactylus.rhynodge.states.ComicState.Comic
+import net.pterodactylus.rhynodge.states.ComicState.Strip
+import net.pterodactylus.rhynodge.states.HtmlState
+import org.hamcrest.MatcherAssert.assertThat
+import org.hamcrest.Matchers.contains
+import org.hamcrest.Matchers.instanceOf
+import org.junit.Test
+
+/**
+ * Unit test for [SinfestComicFilter].
+ */
+class SinfestComicFilterTest {
+
+       private val sinfestFilter: Filter = SinfestComicFilter()
+       private val htmlState = ResourceLoader
+               .loadDocument(SinfestComicFilter::class.java, "sinfest.html", "https://sinfest.xyz/")
+               .let { HtmlState("https://sinfest.xyz/", it) }
+
+       @Test
+       fun canParseComicsFromHtml() {
+               val state = sinfestFilter.filter(htmlState)
+               assertThat(state, instanceOf(ComicState::class.java))
+       }
+
+       @Test
+       fun imageUrlsAreParsedCorrectly() {
+               val comicState = sinfestFilter.filter(htmlState) as ComicState
+               assertThat(comicState.comics(), contains(
+                       Comic("October 24, 2021: Unperson 33").add(Strip("https://sinfest.xyz/btphp/comics/2021-10-24.jpg", ""))
+               ))
+       }
+
+}