1 package net.pterodactylus.sone.web.ajax
3 import net.pterodactylus.sone.test.getInstance
4 import net.pterodactylus.sone.test.mock
5 import net.pterodactylus.sone.test.whenever
6 import net.pterodactylus.sone.web.baseInjector
7 import net.pterodactylus.util.notify.Notification
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.hamcrest.Matchers.notNullValue
12 import org.mockito.Mockito.verify
15 * Unit test for [DismissNotificationAjaxPage].
17 class DismissNotificationAjaxPageTest : JsonPageTest("dismissNotification.ajax", requiresLogin = false, pageSupplier = ::DismissNotificationAjaxPage) {
20 fun `request without notification returns invalid-notification-id`() {
21 assertThatJsonFailed("invalid-notification-id")
25 fun `request to dismiss non-dismissable notification results in not-dismissable`() {
26 val notification = mock<Notification>()
27 addNotification(notification, "foo")
28 addRequestParameter("notification", "foo")
29 assertThatJsonFailed("not-dismissable")
33 fun `request to dismiss dismissable notification dismisses notification`() {
34 val notification = mock<Notification>().apply { whenever(isDismissable).thenReturn(true) }
35 addNotification(notification, "foo")
36 addRequestParameter("notification", "foo")
37 assertThatJsonIsSuccessful()
38 verify(notification).dismiss()
42 fun `page can be created by dependency injection`() {
43 assertThat(baseInjector.getInstance<DismissNotificationAjaxPage>(), notNullValue())