Move web pages to their own package
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / pages / DismissNotificationPageTest.kt
1 package net.pterodactylus.sone.web.pages
2
3 import net.pterodactylus.sone.test.mock
4 import net.pterodactylus.sone.test.whenever
5 import net.pterodactylus.sone.web.pages.WebPageTest
6 import net.pterodactylus.sone.web.pages.DismissNotificationPage
7 import net.pterodactylus.util.notify.Notification
8 import net.pterodactylus.util.web.Method.GET
9 import org.hamcrest.MatcherAssert.assertThat
10 import org.hamcrest.Matchers.equalTo
11 import org.junit.Test
12 import org.mockito.Mockito.never
13 import org.mockito.Mockito.verify
14
15 /**
16  * Unit test for [DismissNotificationPage].
17  */
18 class DismissNotificationPageTest: WebPageTest() {
19
20         private val page = DismissNotificationPage(template, webInterface)
21         private val notification = mock<Notification>()
22
23         override fun getPage() = page
24
25         @Test
26         fun `page returns correct path`() {
27                 assertThat(page.path, equalTo("dismissNotification.html"))
28         }
29
30         @Test
31         fun `page does not require login`() {
32                 assertThat(page.requiresLogin(), equalTo(false))
33         }
34
35         @Test
36         fun `page returns correct title`() {
37                 whenever(l10n.getString("Page.DismissNotification.Title")).thenReturn("dismiss notification page")
38                 assertThat(page.getPageTitle(freenetRequest), equalTo("dismiss notification page"))
39         }
40
41         @Test
42         fun `get request with invalid notification ID redirects to return page`() {
43                 request("", GET)
44                 addHttpRequestParameter("returnPage", "return.html")
45                 verifyRedirect("return.html")
46         }
47
48         @Test
49         fun `get request with non-dismissible notification never dismisses the notification but redirects to return page`() {
50                 request("", GET)
51                 addNotification("notification-id", notification)
52                 addHttpRequestParameter("notification", "notification-id")
53                 addHttpRequestParameter("returnPage", "return.html")
54                 verifyRedirect("return.html") {
55                         verify(notification, never()).dismiss()
56                 }
57         }
58
59         @Test
60         fun `get request with dismissible notification dismisses the notification and redirects to return page`() {
61                 request("", GET)
62                 whenever(notification.isDismissable).thenReturn(true)
63                 addNotification("notification-id", notification)
64                 addHttpRequestParameter("notification", "notification-id")
65                 addHttpRequestParameter("returnPage", "return.html")
66                 verifyRedirect("return.html") {
67                         verify(notification).dismiss()
68                 }
69         }
70
71 }