mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-08 17:20:11 +08:00
Add ForwardRefineTest
This commit is contained in:
parent
301deadbd1
commit
c93d6aa608
@ -38,6 +38,10 @@ internal data class LongMessageInternal internal constructor(override val conten
|
|||||||
internal data class ForwardMessageInternal(
|
internal data class ForwardMessageInternal(
|
||||||
override val content: String,
|
override val content: String,
|
||||||
val resId: String?,
|
val resId: String?,
|
||||||
|
/**
|
||||||
|
* null means top-level.
|
||||||
|
* not null means nested and need [ForwardMessageInternal.MsgTransmits] in [RefineContext]
|
||||||
|
*/
|
||||||
val fileName: String?,
|
val fileName: String?,
|
||||||
) : AbstractServiceMessage(),
|
) : AbstractServiceMessage(),
|
||||||
RefinableMessage {
|
RefinableMessage {
|
||||||
|
@ -121,7 +121,7 @@ internal object EmptyRefineContext : RefineContext {
|
|||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
internal class SimpleRefineContext(
|
internal class SimpleRefineContext(
|
||||||
private val delegate: MutableMap<RefineContextKey<*>, Any>
|
private val delegate: MutableMap<RefineContextKey<*>, Any> = mutableMapOf()
|
||||||
) : MutableRefineContext {
|
) : MutableRefineContext {
|
||||||
|
|
||||||
override fun contains(key: RefineContextKey<*>): Boolean = delegate.containsKey(key)
|
override fun contains(key: RefineContextKey<*>): Boolean = delegate.containsKey(key)
|
||||||
|
@ -0,0 +1,75 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2019-2021 Mamoe Technologies and contributors.
|
||||||
|
*
|
||||||
|
* 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
|
||||||
|
* Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
|
||||||
|
*
|
||||||
|
* https://github.com/mamoe/mirai/blob/master/LICENSE
|
||||||
|
*/
|
||||||
|
|
||||||
|
package net.mamoe.mirai.internal.message.data
|
||||||
|
|
||||||
|
import net.mamoe.mirai.Bot
|
||||||
|
import net.mamoe.mirai.internal.AbstractTestWithMiraiImpl
|
||||||
|
import net.mamoe.mirai.internal.MockBot
|
||||||
|
import net.mamoe.mirai.internal.message.DeepMessageRefiner.refineDeep
|
||||||
|
import net.mamoe.mirai.internal.message.ForwardMessageInternal
|
||||||
|
import net.mamoe.mirai.internal.message.SimpleRefineContext
|
||||||
|
import net.mamoe.mirai.internal.test.runBlockingUnit
|
||||||
|
import net.mamoe.mirai.internal.utils._miraiContentToString
|
||||||
|
import net.mamoe.mirai.message.data.*
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
|
internal class ForwardRefineTest : AbstractTestWithMiraiImpl() {
|
||||||
|
private val bot = MockBot()
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
private const val content = """
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<msg brief="[聊天记录]" m_fileName="C85BCFB5-3143-41E2-860B-172D5E3FAFAC" action="viewMultiMsg" tSum="2" flag="3" m_resid="ZnAsFPOuieB0CJt7HJ6zC1Rq0MRqfso44OAvY99wqePeYYcGr03NI6UXB24QqefR" serviceID="35" m_fileSize="171" > <item layout="1"> <title color="#000000" size="34" > 群聊的聊天记录 </title> <title color="#000000" size="26" > A:@B ‘ </title> <title color="#000000" size="26" > A:@B ’ </title> <hr></hr> <summary color="#808080" size="26" > 查看转发消息 </summary> </item><source name="聊天记录"></source> </msg>
|
||||||
|
"""
|
||||||
|
private const val resId = "ZnAsFPOuieB0CJt7HJ6zC1Rq0MRqfso44OAvY99wqePeYYcGr03NI6UXB24QqefR"
|
||||||
|
private val nodes = listOf(ForwardMessage.Node(1, 1, "sender", AtAll))
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun downloadForwardMessage(bot: Bot, resourceId: String): List<ForwardMessage.Node> {
|
||||||
|
assertEquals(resId, resourceId)
|
||||||
|
return nodes
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun `can refine ForwardMessageInternal deep`() = runBlockingUnit {
|
||||||
|
val internal = ForwardMessageInternal(content, resId, null)
|
||||||
|
val expectedOrigin =
|
||||||
|
SimpleServiceMessage(internal.serviceId, content) // we do not expose ForwardMessageInternal
|
||||||
|
val refine = internal.toMessageChain().refineDeep(bot, SimpleRefineContext().apply {
|
||||||
|
set(ForwardMessageInternal.MsgTransmits, mapOf())
|
||||||
|
})
|
||||||
|
println(refine.size)
|
||||||
|
println(refine.first()::class)
|
||||||
|
println(refine._miraiContentToString())
|
||||||
|
assertTrue { refine.first() is MessageOrigin }
|
||||||
|
assertTrue { refine.drop(1).first() is ForwardMessage }
|
||||||
|
assertEquals(
|
||||||
|
ForwardMessage(
|
||||||
|
preview = listOf("A:@B ‘", "A:@B ’"),
|
||||||
|
title = "群聊的聊天记录",
|
||||||
|
brief = "[聊天记录]",
|
||||||
|
source = "聊天记录",
|
||||||
|
summary = "查看转发消息",
|
||||||
|
nodeList = nodes
|
||||||
|
),
|
||||||
|
refine[ForwardMessage]
|
||||||
|
)
|
||||||
|
assertEquals(
|
||||||
|
expectedOrigin,
|
||||||
|
refine[MessageOrigin]!!.origin
|
||||||
|
)
|
||||||
|
assertEquals(
|
||||||
|
MessageOrigin(expectedOrigin, resId, MessageOriginKind.FORWARD),
|
||||||
|
refine[MessageOrigin]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
@ -96,12 +96,6 @@ private fun RefinableMessage0(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private object MiraiImplForRefineTest : MiraiImpl() {
|
|
||||||
override suspend fun downloadForwardMessage(bot: Bot, resourceId: String): List<ForwardMessage.Node> {
|
|
||||||
return super.downloadForwardMessage(bot, resourceId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal class MessageRefineTest : AbstractTestWithMiraiImpl() {
|
internal class MessageRefineTest : AbstractTestWithMiraiImpl() {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user