Add test for DI constructability of DismissNotificationAjaxPage
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / ajax / DismissNotificationAjaxPageTest.kt
1 package net.pterodactylus.sone.web.ajax
2
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
11 import org.junit.Test
12 import org.mockito.Mockito.verify
13
14 /**
15  * Unit test for [DismissNotificationAjaxPage].
16  */
17 class DismissNotificationAjaxPageTest : JsonPageTest("dismissNotification.ajax", requiresLogin = false, pageSupplier = ::DismissNotificationAjaxPage) {
18
19         @Test
20         fun `request without notification returns invalid-notification-id`() {
21                 assertThatJsonFailed("invalid-notification-id")
22         }
23
24         @Test
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")
30         }
31
32         @Test
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()
39         }
40
41         @Test
42         fun `page can be created by dependency injection`() {
43             assertThat(baseInjector.getInstance<DismissNotificationAjaxPage>(), notNullValue())
44         }
45
46 }