Add unit test for get local sones command
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / fcp / GetLocalSonesCommandTest.kt
1 package net.pterodactylus.sone.fcp
2
3 import net.pterodactylus.sone.core.Core
4 import net.pterodactylus.sone.data.Profile
5 import net.pterodactylus.sone.data.Sone
6 import net.pterodactylus.sone.test.mock
7 import net.pterodactylus.sone.test.whenever
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.hamcrest.Matchers.equalTo
10 import org.junit.Test
11
12 /**
13  * Unit test for [GetLocalSonesCommand].
14  */
15 class GetLocalSonesCommandTest : SoneCommandTest() {
16
17         override fun createCommand(core: Core) = GetLocalSonesCommand(core)
18
19         @Test
20         fun `command does not require write access`() {
21                 assertThat(command.requiresWriteAccess(), equalTo(false))
22         }
23
24         private fun createSone(id: String, name: String, firstName: String, lastName: String, time: Long) = mock<Sone>().apply {
25                 whenever(this.id).thenReturn(id)
26                 whenever(this.name).thenReturn(name)
27                 whenever(profile).thenReturn(Profile(this).apply {
28                         this.firstName = firstName
29                         this.lastName = lastName
30                 })
31                 whenever(this.time).thenReturn(time)
32         }
33
34         @Test
35         fun `command returns local sones`() {
36                 val localSones = setOf(
37                                 createSone("Id1", "Name1", "First1", "Last1", 1000L),
38                                 createSone("Id2", "Name2", "First2", "Last2", 2000L)
39                 )
40                 whenever(core.localSones).thenReturn(localSones)
41                 val response = command.execute(null)
42                 val replyParameters = response.replyParameters
43                 assertThat(replyParameters["Message"], equalTo("ListLocalSones"))
44                 assertThat(replyParameters["LocalSones.Count"], equalTo("2"))
45                 assertThat(replyParameters["LocalSones.0.ID"], equalTo("Id1"))
46                 assertThat(replyParameters["LocalSones.0.Name"], equalTo("Name1"))
47                 assertThat(replyParameters["LocalSones.0.NiceName"], equalTo("First1 Last1"))
48                 assertThat(replyParameters["LocalSones.0.Time"], equalTo("1000"))
49                 assertThat(replyParameters["LocalSones.1.ID"], equalTo("Id2"))
50                 assertThat(replyParameters["LocalSones.1.Name"], equalTo("Name2"))
51                 assertThat(replyParameters["LocalSones.1.NiceName"], equalTo("First2 Last2"))
52                 assertThat(replyParameters["LocalSones.1.Time"], equalTo("2000"))
53         }
54
55 }