Skip to content

Commit 311e0b7

Browse files
committed
implement some method in MockPuppet,including start() stop() logout() ding()
1 parent 63dcbf6 commit 311e0b7

File tree

3 files changed

+62
-11
lines changed

3 files changed

+62
-11
lines changed

wechaty-puppet-mock/src/main/kotlin/io/github/wechaty/MockData.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ class MockData {
3434
return FileBox.fromUrl(faker.avatar().image(), null)
3535
}
3636

37+
fun getMessagePayload(fromId: String, toId: String): MessagePayload {
38+
val messagePayload = getFakeMessagePayload()
39+
messagePayload.fromId = fromId
40+
messagePayload.toId = toId
41+
return messagePayload
42+
}
43+
3744
fun getFakeMessagePayload(): MessagePayload {
3845
val messagePayload = MessagePayload(UUID.randomUUID().toString())
3946
messagePayload.fromId = UUID.randomUUID().toString()

wechaty-puppet-mock/src/main/kotlin/io/github/wechaty/MockPuppet.kt

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,21 @@
11
package io.github.wechaty
22

3-
import io.github.wechaty.Puppet
43
import io.github.wechaty.filebox.FileBox
54
import io.github.wechaty.schemas.*
65
import org.slf4j.LoggerFactory
6+
import java.util.*
7+
import java.util.concurrent.CompletableFuture
78
import java.util.concurrent.Future
9+
import kotlin.concurrent.scheduleAtFixedRate
810

911
class MockPuppet(puppetOptions: PuppetOptions) : Puppet(puppetOptions) {
12+
13+
private val timer: Timer
14+
15+
init {
16+
timer = Timer()
17+
}
18+
1019
override fun start(): Future<Void> {
1120

1221
log.info("MockPuppet start()")
@@ -29,20 +38,55 @@ class MockPuppet(puppetOptions: PuppetOptions) : Puppet(puppetOptions) {
2938

3039

3140
val userPayload = MockData.getFakeContactPayload()
32-
TODO("Not yet implemented")
41+
cacheContactPayload.put(userPayload.id, userPayload)
3342

43+
setId(userPayload.id)
44+
45+
emit("login", EventLoginPayload(userPayload.id))
46+
47+
timer.scheduleAtFixedRate(0, 5000) {
48+
val fromContactPayload = MockData.getFakeContactPayload()
49+
cacheContactPayload.put(fromContactPayload.id, fromContactPayload)
50+
val messagePayload = MockData.getMessagePayload(fromContactPayload.id, userPayload.id)
51+
52+
cacheMessagePayload.put(messagePayload.id, messagePayload)
53+
log.info("MockPuppet start() schedule pretending received a new message:${messagePayload.id}")
54+
emit("message", EventMessagePayload(messagePayload.id))
55+
}
56+
return CompletableFuture.completedFuture(null)
3457
}
3558

3659
override fun stop(): Future<Void> {
37-
TODO("Not yet implemented")
60+
log.info("MockPuppet stop()")
61+
//TODO StateSwitch
62+
/*
63+
if (this.state.off()) {
64+
log.warn('PuppetMock', 'stop() is called on a OFF puppet. await ready(off) and return.')
65+
await this.state.ready('off')
66+
return
67+
}
68+
69+
this.state.off('pending')
70+
*/
71+
timer.cancel()
72+
73+
//this.state.off(true)
74+
return CompletableFuture.completedFuture(null)
3875
}
3976

4077
override fun logout(): Future<Void> {
41-
TODO("Not yet implemented")
78+
log.info("MockPuppet logout()")
79+
val id = getId() ?: throw Exception("logout before login?")
80+
81+
emit("logout", EventLogoutPayload(id, "test"))
82+
setId(null)
83+
84+
return CompletableFuture.completedFuture(null)
4285
}
4386

4487
override fun ding(data: String?) {
45-
TODO("Not yet implemented")
88+
log.info("MockPuppet ding($data?:'')")
89+
emit("dong", EventDongPayload(data ?: ""))
4690
}
4791

4892
override fun contactSelfName(name: String): Future<Void> {

wechaty-puppet/src/main/kotlin/Puppet.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,12 @@ abstract class Puppet : EventEmitter {
4444

4545
private val executorService = Executors.newSingleThreadScheduledExecutor()
4646

47-
private lateinit var cacheContactPayload: Cache<String, ContactPayload>
48-
private lateinit var cacheFriendshipPayload: Cache<String, FriendshipPayload>
49-
private lateinit var cacheMessagePayload: Cache<String, MessagePayload>
50-
private lateinit var cacheRoomPayload: Cache<String, RoomPayload>
51-
private lateinit var cacheRoomMemberPayload: Cache<String, RoomMemberPayload>
52-
private lateinit var cacheRoomInvitationPayload: Cache<String, RoomInvitationPayload>
47+
protected lateinit var cacheContactPayload: Cache<String, ContactPayload>
48+
protected lateinit var cacheFriendshipPayload: Cache<String, FriendshipPayload>
49+
protected lateinit var cacheMessagePayload: Cache<String, MessagePayload>
50+
protected lateinit var cacheRoomPayload: Cache<String, RoomPayload>
51+
protected lateinit var cacheRoomMemberPayload: Cache<String, RoomMemberPayload>
52+
protected lateinit var cacheRoomInvitationPayload: Cache<String, RoomInvitationPayload>
5353
private val count = AtomicLong()
5454
private var id: String? = null
5555
protected var puppetOptions: PuppetOptions? = null

0 commit comments

Comments
 (0)