Make about page injectable
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / web / AboutPageTest.kt
1 package net.pterodactylus.sone.web
2
3 import com.google.inject.Guice
4 import net.pterodactylus.sone.main.SonePlugin.PluginHomepage
5 import net.pterodactylus.sone.main.SonePlugin.PluginVersion
6 import net.pterodactylus.sone.main.SonePlugin.PluginYear
7 import net.pterodactylus.sone.test.getInstance
8 import net.pterodactylus.sone.test.isProvidedByMock
9 import net.pterodactylus.util.template.Template
10 import org.hamcrest.MatcherAssert.assertThat
11 import org.hamcrest.Matchers.equalTo
12 import org.hamcrest.Matchers.notNullValue
13 import org.hamcrest.Matchers.sameInstance
14 import org.junit.Test
15
16 /**
17  * Unit test for [AboutPage].
18  */
19 class AboutPageTest : WebPageTest() {
20
21         private val version = "0.1.2"
22         private val year = 1234
23         private val homepage = "home://page"
24         private val page = AboutPage(template, webInterface, PluginVersion(version), PluginYear(year), PluginHomepage(homepage))
25         private val injector = Guice.createInjector(
26                         Template::class.isProvidedByMock(),
27                         WebInterface::class.isProvidedByMock(),
28                         PluginVersion::class.isProvidedByMock(),
29                         PluginYear::class.isProvidedByMock(),
30                         PluginHomepage::class.isProvidedByMock()
31         )!!
32
33         @Test
34         fun `page returns correct path`() {
35                 assertThat(page.path, equalTo("about.html"))
36         }
37
38         @Test
39         fun `page does not require login`() {
40                 assertThat(page.requiresLogin(), equalTo(false))
41         }
42
43         @Test
44         fun `page sets correct version in template context`() {
45                 page.processTemplate(freenetRequest, templateContext)
46                 assertThat(templateContext["version"], equalTo<Any>(version))
47         }
48
49         @Test
50         fun `page sets correct homepage in template context`() {
51                 page.processTemplate(freenetRequest, templateContext)
52                 assertThat(templateContext["homepage"], equalTo<Any>(homepage))
53         }
54
55         @Test
56         fun `page sets correct year in template context`() {
57                 page.processTemplate(freenetRequest, templateContext)
58                 assertThat(templateContext["year"], equalTo<Any>(year))
59         }
60
61         @Test
62         fun `page can be created by guice`() {
63                 assertThat(injector.getInstance<AboutPage>(), notNullValue())
64         }
65
66         @Test
67         fun `page is created as singleton`() {
68             val firstInstance = injector.getInstance<AboutPage>()
69                 val secondInstance = injector.getInstance<AboutPage>()
70                 assertThat(firstInstance, sameInstance(secondInstance))
71         }
72
73 }