X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FDismissNotificationPageTest.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Fweb%2Fpages%2FDismissNotificationPageTest.kt;h=b6524a8207e96f5667c2b013030daa9ac2391078;hp=0000000000000000000000000000000000000000;hb=de7568a82eb4150bf6d2b0553841b7b69f84c968;hpb=9acbc5bdec4ccb752e0856a501568b0bb6161579 diff --git a/src/test/kotlin/net/pterodactylus/sone/web/pages/DismissNotificationPageTest.kt b/src/test/kotlin/net/pterodactylus/sone/web/pages/DismissNotificationPageTest.kt new file mode 100644 index 0000000..b6524a8 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/web/pages/DismissNotificationPageTest.kt @@ -0,0 +1,71 @@ +package net.pterodactylus.sone.web.pages + +import net.pterodactylus.sone.test.mock +import net.pterodactylus.sone.test.whenever +import net.pterodactylus.sone.web.pages.WebPageTest +import net.pterodactylus.sone.web.pages.DismissNotificationPage +import net.pterodactylus.util.notify.Notification +import net.pterodactylus.util.web.Method.GET +import org.hamcrest.MatcherAssert.assertThat +import org.hamcrest.Matchers.equalTo +import org.junit.Test +import org.mockito.Mockito.never +import org.mockito.Mockito.verify + +/** + * Unit test for [DismissNotificationPage]. + */ +class DismissNotificationPageTest: WebPageTest() { + + private val page = DismissNotificationPage(template, webInterface) + private val notification = mock() + + override fun getPage() = page + + @Test + fun `page returns correct path`() { + assertThat(page.path, equalTo("dismissNotification.html")) + } + + @Test + fun `page does not require login`() { + assertThat(page.requiresLogin(), equalTo(false)) + } + + @Test + fun `page returns correct title`() { + whenever(l10n.getString("Page.DismissNotification.Title")).thenReturn("dismiss notification page") + assertThat(page.getPageTitle(freenetRequest), equalTo("dismiss notification page")) + } + + @Test + fun `get request with invalid notification ID redirects to return page`() { + request("", GET) + addHttpRequestParameter("returnPage", "return.html") + verifyRedirect("return.html") + } + + @Test + fun `get request with non-dismissible notification never dismisses the notification but redirects to return page`() { + request("", GET) + addNotification("notification-id", notification) + addHttpRequestParameter("notification", "notification-id") + addHttpRequestParameter("returnPage", "return.html") + verifyRedirect("return.html") { + verify(notification, never()).dismiss() + } + } + + @Test + fun `get request with dismissible notification dismisses the notification and redirects to return page`() { + request("", GET) + whenever(notification.isDismissable).thenReturn(true) + addNotification("notification-id", notification) + addHttpRequestParameter("notification", "notification-id") + addHttpRequestParameter("returnPage", "return.html") + verifyRedirect("return.html") { + verify(notification).dismiss() + } + } + +}