🎨 Store shells instead of full posts in in-memory database
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / test / TestPostBuilder.kt
1 package net.pterodactylus.sone.test
2
3 import net.pterodactylus.sone.data.Post
4 import net.pterodactylus.sone.database.PostBuilder
5 import java.util.UUID
6
7 /**
8  * [PostBuilder] implementation that returns a mocked [Post].
9  */
10 class TestPostBuilder : PostBuilder {
11
12         private var id: String? = null
13         private var soneId: String? = null
14         private var recipientId: String? = null
15         private var time: Long? = null
16         private var text: String? = null
17
18         override fun copyPost(post: Post): PostBuilder = this
19
20         override fun from(senderId: String): PostBuilder = apply {
21                 soneId = senderId
22         }
23
24         override fun randomId(): PostBuilder = apply {
25                 id = UUID.randomUUID().toString()
26         }
27
28         override fun withId(id: String): PostBuilder = apply {
29                 this.id = id
30         }
31
32         override fun currentTime(): PostBuilder = apply {
33                 time = System.currentTimeMillis()
34         }
35
36         override fun withTime(time: Long): PostBuilder = apply {
37                 this.time = time
38         }
39
40         override fun withText(text: String): PostBuilder = apply {
41                 this.text = text
42         }
43
44         override fun to(recipientId: String): PostBuilder = apply {
45                 this.recipientId = recipientId
46         }
47
48         override fun build(): Post =
49                         createPost(text!!, sone = createRemoteSone(soneId!!), time = time!!, recipient = recipientId?.let { createRemoteSone(it) }, id = id!!)
50
51 }