Add unit test for dismiss notification page
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / DismissNotificationPageTest.kt
1 package net.pterodactylus.sone.web
2
3 import net.pterodactylus.sone.test.mock
4 import net.pterodactylus.sone.test.whenever
5 import net.pterodactylus.sone.web.WebTestUtils.redirectsTo
6 import net.pterodactylus.util.notify.Notification
7 import net.pterodactylus.util.web.Method.GET
8 import org.junit.Test
9 import org.mockito.Mockito.never
10 import org.mockito.Mockito.verify
11 import kotlin.test.fail
12
13 /**
14  * Unit test for [DismissNotificationPage].
15  */
16 class DismissNotificationPageTest : WebPageTest() {
17
18         private val page = DismissNotificationPage(template, webInterface)
19         private val notification = mock<Notification>()
20
21         @Test
22         fun `get request with invalid notification ID redirects to return page`() {
23                 request("", GET)
24                 addHttpRequestParameter("returnPage", "return.html")
25                 expectedException.expect(redirectsTo("return.html"))
26                 page.handleRequest(freenetRequest, templateContext)
27         }
28
29         @Test
30         fun `get request with dismissible notification dismisses the notification and redirects to return page`() {
31                 request("", GET)
32                 addNotification("notification-id", notification)
33                 addHttpRequestParameter("notification", "notification-id")
34                 addHttpRequestParameter("returnPage", "return.html")
35                 expectedException.expect(redirectsTo("return.html"))
36                 try {
37                         page.handleRequest(freenetRequest, templateContext)
38                         fail()
39                 } finally {
40                         verify(notification, never()).dismiss()
41                 }
42         }
43
44         @Test
45         fun `get request with non dismissible notification redirects to return page`() {
46                 request("", GET)
47                 whenever(notification.isDismissable).thenReturn(true)
48                 addNotification("notification-id", notification)
49                 addHttpRequestParameter("notification", "notification-id")
50                 addHttpRequestParameter("returnPage", "return.html")
51                 expectedException.expect(redirectsTo("return.html"))
52                 try {
53                         page.handleRequest(freenetRequest, templateContext)
54                         fail()
55                 } finally {
56                         verify(notification).dismiss()
57                 }
58         }
59
60 }