1 package net.pterodactylus.sone.web.pages
3 import net.pterodactylus.sone.core.SoneRescuer
4 import net.pterodactylus.sone.test.mock
5 import net.pterodactylus.sone.test.whenever
6 import net.pterodactylus.sone.web.pages.RescuePage
7 import net.pterodactylus.util.web.Method.GET
8 import net.pterodactylus.util.web.Method.POST
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.junit.Before
13 import org.mockito.ArgumentMatchers.anyLong
14 import org.mockito.Mockito.never
15 import org.mockito.Mockito.verify
18 * Unit test for [RescuePage].
20 class RescuePageTest : WebPageTest() {
22 private val page = RescuePage(template, webInterface)
24 private val soneRescuer = mock<SoneRescuer>()
26 override fun getPage() = page
29 fun setupSoneRescuer() {
30 whenever(core.getSoneRescuer(currentSone)).thenReturn(soneRescuer)
34 fun `get request sets rescuer in template context`() {
36 page.handleRequest(freenetRequest, templateContext)
37 assertThat(templateContext["soneRescuer"], equalTo<Any>(soneRescuer))
41 fun `post request redirects to rescue page`() {
43 verifyRedirect("rescue.html")
47 fun `post request with fetch and invalid edition starts next fetch`() {
49 addHttpRequestParameter("fetch", "true")
50 verifyRedirect("rescue.html") {
51 verify(soneRescuer, never()).setEdition(anyLong())
52 verify(soneRescuer).startNextFetch()
57 fun `post request with fetch and valid edition sets edition and starts next fetch`() {
59 addHttpRequestParameter("fetch", "true")
60 addHttpRequestParameter("edition", "123")
61 verifyRedirect("rescue.html") {
62 verify(soneRescuer).setEdition(123L)
63 verify(soneRescuer).startNextFetch()