1 package net.pterodactylus.sone.web.pages
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
12 import org.mockito.Mockito.never
13 import org.mockito.Mockito.verify
16 * Unit test for [DismissNotificationPage].
18 class DismissNotificationPageTest: WebPageTest() {
20 private val page = DismissNotificationPage(template, webInterface)
21 private val notification = mock<Notification>()
23 override fun getPage() = page
26 fun `page returns correct path`() {
27 assertThat(page.path, equalTo("dismissNotification.html"))
31 fun `page does not require login`() {
32 assertThat(page.requiresLogin(), equalTo(false))
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"))
42 fun `get request with invalid notification ID redirects to return page`() {
44 addHttpRequestParameter("returnPage", "return.html")
45 verifyRedirect("return.html")
49 fun `get request with non-dismissible notification never dismisses the notification but redirects to return page`() {
51 addNotification("notification-id", notification)
52 addHttpRequestParameter("notification", "notification-id")
53 addHttpRequestParameter("returnPage", "return.html")
54 verifyRedirect("return.html") {
55 verify(notification, never()).dismiss()
60 fun `get request with dismissible notification dismisses the notification and redirects to return page`() {
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()