🎨 Fix formatting
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / main / FreenetModuleTest.kt
1 package net.pterodactylus.sone.main
2
3 import com.google.inject.*
4 import freenet.client.*
5 import freenet.clients.http.*
6 import freenet.node.*
7 import freenet.pluginmanager.*
8 import net.pterodactylus.sone.test.*
9 import org.hamcrest.MatcherAssert.*
10 import org.hamcrest.Matchers.*
11 import org.junit.*
12 import org.mockito.Mockito.*
13
14 /**
15  * Unit test for [FreenetModule].
16  */
17 class FreenetModuleTest {
18
19         private val sessionManager = mock<SessionManager>()
20         private val pluginRespirator = deepMock<PluginRespirator>().apply {
21                 whenever(getSessionManager("Sone")).thenReturn(sessionManager)
22         }
23         private val node = pluginRespirator.node!!
24         private val highLevelSimpleClient = pluginRespirator.hlSimpleClient!!
25         private val toadletContainer: ToadletContainer = pluginRespirator.toadletContainer
26         private val pageMaker: PageMaker = pluginRespirator.pageMaker
27         private val module = FreenetModule(pluginRespirator)
28         private val injector = Guice.createInjector(module)
29
30         private inline fun <reified T : Any> verifySingletonInstance() {
31                 val firstInstance = injector.getInstance<T>()
32                 val secondInstance = injector.getInstance<T>()
33                 assertThat(firstInstance, sameInstance(secondInstance))
34         }
35
36         @Test
37         fun `plugin respirator is returned correctly`() {
38                 assertThat(injector.getInstance(), sameInstance(pluginRespirator))
39         }
40
41         @Test
42         fun `plugin respirator is returned as singleton`() {
43                 verifySingletonInstance<PluginRespirator>()
44         }
45
46         @Test
47         fun `node is returned correctly`() {
48                 assertThat(injector.getInstance(), sameInstance(node))
49         }
50
51         @Test
52         fun `node is returned as singleton`() {
53                 verifySingletonInstance<Node>()
54         }
55
56         @Test
57         fun `high level simply client is returned correctly`() {
58                 assertThat(injector.getInstance(), sameInstance(highLevelSimpleClient))
59         }
60
61         @Test
62         fun `high level simply client is returned as singleton`() {
63                 verifySingletonInstance<HighLevelSimpleClient>()
64         }
65
66         @Test
67         fun `session manager is returned correctly`() {
68                 assertThat(injector.getInstance(), sameInstance(sessionManager))
69         }
70
71         @Test
72         fun `session manager is returned as singleton`() {
73                 verifySingletonInstance<SessionManager>()
74                 verify(pluginRespirator).getSessionManager("Sone")
75         }
76
77         @Test
78         fun `toadlet container is returned correctly`() {
79                 assertThat(injector.getInstance(), sameInstance(toadletContainer))
80         }
81
82         @Test
83         fun `toadlet container is returned as singleten`() {
84                 verifySingletonInstance<ToadletContainer>()
85         }
86
87         @Test
88         fun `page maker is returned correctly`() {
89                 assertThat(injector.getInstance(), sameInstance(pageMaker))
90         }
91
92         @Test
93         fun `page maker is returned as singleten`() {
94                 verifySingletonInstance<PageMaker>()
95         }
96
97 }