✅ Add base class for comic tests
[rhynodge.git] / src / test / kotlin / net / pterodactylus / rhynodge / filters / comics / ComicSiteFilterTest.kt
1 package net.pterodactylus.rhynodge.filters.comics
2
3 import net.pterodactylus.rhynodge.filters.ComicSiteFilter
4 import net.pterodactylus.rhynodge.filters.ResourceLoader
5 import net.pterodactylus.rhynodge.states.ComicState
6 import net.pterodactylus.rhynodge.states.ComicState.Comic
7 import net.pterodactylus.rhynodge.states.HtmlState
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.junit.Test
11
12 abstract class ComicSiteFilterTest {
13
14         protected abstract val filter: ComicSiteFilter
15         protected abstract val baseUrl: String
16         protected abstract val resource: String
17         protected abstract val expectedComics: List<Comic>
18
19         private val htmlState: HtmlState by lazy {
20                 ResourceLoader
21                         .loadDocument(javaClass, resource, baseUrl)
22                         .let { HtmlState(baseUrl, it) }
23         }
24
25         @Test
26         fun `comic is loaded correctly`() {
27                 val comicState = filter.filter(htmlState) as ComicState
28                 assertThat(comicState.comics(), equalTo(expectedComics))
29         }
30
31 }