From: David ‘Bombe’ Roden Date: Sun, 24 Oct 2021 12:49:31 +0000 (+0200) Subject: 🎨 Replace Sinfest filter test with Kotlin version X-Git-Tag: v2~62 X-Git-Url: https://git.pterodactylus.net/?p=rhynodge.git;a=commitdiff_plain;h=0d3b5974ea8d2a7acae98826d550fbc5b4ef4b8f 🎨 Replace Sinfest filter test with Kotlin version --- 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 index aee1142..0000000 --- a/src/test/java/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.java +++ /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 David ‘Bombe’ Roden - */ -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 matchesComic(String title, String url, String comment) { - return new TypeSafeDiagnosingMatcher() { - @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 index 0000000..92049ba --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/rhynodge/filters/comics/SinfestComicFilterTest.kt @@ -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", "")) + )) + } + +}