Add unit test for delete sone page
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / DeleteSonePageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.sone.web.WebTestUtils.redirectsTo
4 import net.pterodactylus.util.web.Method.GET
5 import net.pterodactylus.util.web.Method.POST
6 import org.junit.Test
7 import org.mockito.Mockito.verify
8 import kotlin.test.fail
9
10 /**
11  * Unit test for [DeleteSonePage].
12  */
13 class DeleteSonePageTest : WebPageTest() {
14
15         private val page = DeleteSonePage(template, webInterface)
16
17         @Test
18         fun `get request does not redirect`() {
19                 request("", GET)
20                 page.handleRequest(freenetRequest, templateContext)
21         }
22
23         @Test
24         fun `post request without delete confirmation redirects to index`() {
25                 request("", POST)
26                 expectedException.expect(redirectsTo("index.html"))
27                 page.handleRequest(freenetRequest, templateContext)
28         }
29
30         @Test
31         fun `post request with delete confirmation deletes sone and redirects to index`() {
32                 request("", POST)
33                 addHttpRequestParameter("deleteSone", "true")
34                 expectedException.expect(redirectsTo("index.html"))
35                 try {
36                         page.handleRequest(freenetRequest, templateContext)
37                         fail()
38                 } finally {
39                         verify(core).deleteSone(currentSone)
40                 }
41         }
42
43 }