Add test for DI constructability of SearchPage
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 21 Jan 2018 10:33:12 +0000 (11:33 +0100)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Sun, 21 Jan 2018 10:33:12 +0000 (11:33 +0100)
src/main/kotlin/net/pterodactylus/sone/web/pages/SearchPage.kt
src/test/kotlin/net/pterodactylus/sone/web/pages/SearchPageTest.kt

index 7cddc35..e94d879 100644 (file)
@@ -22,14 +22,18 @@ import net.pterodactylus.util.template.TemplateContext
 import net.pterodactylus.util.text.StringEscaper
 import net.pterodactylus.util.text.TextException
 import java.util.concurrent.TimeUnit.MINUTES
+import javax.inject.Inject
 
 /**
  * This page lets the user search for posts and replies that contain certain
  * words.
  */
-class SearchPage @JvmOverloads constructor(template: Template, webInterface: WebInterface, ticker: Ticker = Ticker.systemTicker()):
+class SearchPage(template: Template, webInterface: WebInterface, ticker: Ticker = Ticker.systemTicker()) :
                SoneTemplatePage("search.html", webInterface, template, "Page.Search.Title") {
 
+       @Inject constructor(template: Template, webInterface: WebInterface) :
+                       this(template, webInterface, Ticker.systemTicker())
+
        private val cache: Cache<Iterable<Phrase>, Pagination<Post>> = CacheBuilder.newBuilder().ticker(ticker).expireAfterAccess(5, MINUTES).build()
 
        override fun handleRequest(freenetRequest: FreenetRequest, templateContext: TemplateContext) {
index 94af5da..104006c 100644 (file)
@@ -8,13 +8,16 @@ import net.pterodactylus.sone.data.Post
 import net.pterodactylus.sone.data.PostReply
 import net.pterodactylus.sone.data.Profile
 import net.pterodactylus.sone.data.Sone
+import net.pterodactylus.sone.test.getInstance
 import net.pterodactylus.sone.test.isOnPage
 import net.pterodactylus.sone.test.mock
 import net.pterodactylus.sone.test.whenever
 import net.pterodactylus.sone.utils.asOptional
+import net.pterodactylus.sone.web.baseInjector
 import org.hamcrest.MatcherAssert.assertThat
 import org.hamcrest.Matchers.contains
 import org.hamcrest.Matchers.equalTo
+import org.hamcrest.Matchers.notNullValue
 import org.junit.Test
 import java.util.concurrent.TimeUnit
 import java.util.concurrent.atomic.AtomicInteger
@@ -364,4 +367,9 @@ class SearchPageTest: WebPageTest({ template, webInterface -> SearchPage(templat
        @Suppress("UNCHECKED_CAST")
        private operator fun <T> get(key: String): T? = templateContext[key] as? T
 
+       @Test
+       fun `page can be created by dependency injection`() {
+           assertThat(baseInjector.getInstance<SearchPage>(), notNullValue())
+       }
+
 }