Add test for DI constructability of GetTimesAjaxPage
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 25 Jan 2018 18:14:59 +0000 (19:14 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Thu, 25 Jan 2018 18:30:52 +0000 (19:30 +0100)
src/main/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPage.kt
src/test/kotlin/net/pterodactylus/sone/web/ajax/GetTimesAjaxPageTest.kt

index cb3b86d..233cf75 100644 (file)
@@ -8,11 +8,12 @@ import net.pterodactylus.sone.web.WebInterface
 import net.pterodactylus.sone.web.page.FreenetRequest
 import java.text.SimpleDateFormat
 import java.util.TimeZone
+import javax.inject.Inject
 
 /**
  * Ajax page that returns a formatted, relative timestamp for replies or posts.
  */
-class GetTimesAjaxPage(webInterface: WebInterface,
+class GetTimesAjaxPage @Inject constructor(webInterface: WebInterface,
                private val timeTextConverter: TimeTextConverter,
                private val l10nFilter: L10nFilter,
                timeZone: TimeZone) : JsonPage("getTimes.ajax", webInterface) {
index d6b5aa0..62a34d1 100644 (file)
@@ -6,18 +6,23 @@ import net.pterodactylus.sone.data.PostReply
 import net.pterodactylus.sone.freenet.L10nFilter
 import net.pterodactylus.sone.freenet.L10nText
 import net.pterodactylus.sone.test.get
+import net.pterodactylus.sone.test.getInstance
+import net.pterodactylus.sone.test.isProvidedByMock
 import net.pterodactylus.sone.test.mock
 import net.pterodactylus.sone.test.whenever
 import net.pterodactylus.sone.text.TimeText
 import net.pterodactylus.sone.text.TimeTextConverter
 import net.pterodactylus.sone.utils.jsonObject
+import net.pterodactylus.sone.web.baseInjector
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.containsInAnyOrder
 import org.hamcrest.Matchers.emptyIterable
+import org.hamcrest.Matchers.notNullValue
 import org.junit.Before
 import org.junit.Test
 import org.mockito.ArgumentMatchers.any
 import org.mockito.ArgumentMatchers.anyLong
+import java.util.TimeZone
 import java.util.TimeZone.getTimeZone
 
 /**
@@ -106,4 +111,13 @@ class GetTimesAjaxPageTest : JsonPageTest("getTimes.ajax", needsFormPassword = f
                ))
        }
 
+       @Test
+       fun `page can be created by dependency injection`() {
+               assertThat(baseInjector.createChildInjector(
+                               TimeTextConverter::class.isProvidedByMock(),
+                               L10nFilter::class.isProvidedByMock(),
+                               TimeZone::class.isProvidedByMock()
+               ).getInstance<GetTimesAjaxPage>(), notNullValue())
+       }
+
 }