4c9efe75fba26e53d74da92ee5131a738e3cd156
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / test / TestPostBuilder.kt
1 package net.pterodactylus.sone.test
2
3 import com.google.common.base.Optional
4 import net.pterodactylus.sone.data.Post
5 import net.pterodactylus.sone.data.Sone
6 import net.pterodactylus.sone.database.PostBuilder
7 import java.util.UUID
8
9 /**
10  * [PostBuilder] implementation that returns a mocked [Post].
11  */
12 class TestPostBuilder : PostBuilder {
13
14         private val post = mock<Post>()
15         private var recipientId: String? = null
16
17         override fun copyPost(post: Post): PostBuilder = this
18
19         override fun from(senderId: String): PostBuilder = apply {
20                 val sone = mock<Sone>()
21                 whenever(sone.id).thenReturn(senderId)
22                 whenever(post.sone).thenReturn(sone)
23         }
24
25         override fun randomId(): PostBuilder = apply {
26                 whenever(post.id).thenReturn(UUID.randomUUID().toString())
27         }
28
29         override fun withId(id: String): PostBuilder = apply {
30                 whenever(post.id).thenReturn(id)
31         }
32
33         override fun currentTime(): PostBuilder = apply {
34                 whenever(post.time).thenReturn(System.currentTimeMillis())
35         }
36
37         override fun withTime(time: Long): PostBuilder = apply {
38                 whenever(post.time).thenReturn(time)
39         }
40
41         override fun withText(text: String): PostBuilder = apply {
42                 whenever(post.text).thenReturn(text)
43         }
44
45         override fun to(recipientId: String): PostBuilder = apply {
46                 this.recipientId = recipientId
47         }
48
49         override fun build(): Post = post
50                         .also {
51                                 whenever(post.recipientId).thenReturn(Optional.fromNullable(recipientId))
52                         }
53
54 }