1 package net.pterodactylus.sone.fcp
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
13 * Unit test for [GetLocalSonesCommand].
15 class GetLocalSonesCommandTest : SoneCommandTest() {
17 override fun createCommand(core: Core) = GetLocalSonesCommand(core)
20 fun `command does not require write access`() {
21 assertThat(command.requiresWriteAccess(), equalTo(false))
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
31 whenever(this.time).thenReturn(time)
35 fun `command returns local sones`() {
36 val localSones = setOf(
37 createSone("Id1", "Name1", "First1", "Last1", 1000L),
38 createSone("Id2", "Name2", "First2", "Last2", 2000L)
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"))