feat: add AI retouch task center
This commit is contained in:
@@ -178,6 +178,44 @@ final class MessageCenterViewModelTests: XCTestCase {
|
||||
|
||||
XCTAssertEqual(failureMessage, "删除失败: server down")
|
||||
}
|
||||
|
||||
func testAIRetouchMessageExposesTaskActionAndParsesDirectBatchId() {
|
||||
let message = makeMessage(
|
||||
id: 14,
|
||||
type: 14,
|
||||
extraData: ["ai_retouch_batch_id": .number(59)]
|
||||
)
|
||||
let viewModel = MessageDetailViewModel(message: message)
|
||||
|
||||
XCTAssertTrue(viewModel.showsAIRetouchTaskAction)
|
||||
XCTAssertEqual(viewModel.aiRetouchBatchId, 59)
|
||||
}
|
||||
|
||||
func testAIRetouchMessageParsesNestedStringBatchIdAndFallsBackWhenInvalid() {
|
||||
let nested = makeMessage(
|
||||
id: 15,
|
||||
type: 14,
|
||||
extraData: ["data": .object(["ai_retouch_batch_id": .string(" 61 ")])]
|
||||
)
|
||||
let wrapped = makeMessage(
|
||||
id: 17,
|
||||
type: 14,
|
||||
extraData: ["data": .string(#"{"ai_retouch_batch_id":63}"#)]
|
||||
)
|
||||
let missing = makeMessage(id: 16, type: 14, extraData: [:])
|
||||
let manualRetouch = makeMessage(
|
||||
id: 10,
|
||||
type: 10,
|
||||
extraData: ["ai_retouch_batch_id": .number(59)]
|
||||
)
|
||||
|
||||
XCTAssertEqual(MessageDetailViewModel(message: nested).aiRetouchBatchId, 61)
|
||||
XCTAssertEqual(MessageDetailViewModel(message: wrapped).aiRetouchBatchId, 63)
|
||||
XCTAssertTrue(MessageDetailViewModel(message: missing).showsAIRetouchTaskAction)
|
||||
XCTAssertNil(MessageDetailViewModel(message: missing).aiRetouchBatchId)
|
||||
XCTAssertFalse(MessageDetailViewModel(message: manualRetouch).showsAIRetouchTaskAction)
|
||||
XCTAssertNil(MessageDetailViewModel(message: manualRetouch).aiRetouchBatchId)
|
||||
}
|
||||
}
|
||||
|
||||
@MainActor
|
||||
@@ -226,12 +264,17 @@ private struct TestError: LocalizedError {
|
||||
var errorDescription: String? { message }
|
||||
}
|
||||
|
||||
private func makeMessage(id: Int, isRead: Bool = false) -> MessageItem {
|
||||
private func makeMessage(
|
||||
id: Int,
|
||||
isRead: Bool = false,
|
||||
type: Int = 1,
|
||||
extraData: [String: MessageJSONValue]? = nil
|
||||
) -> MessageItem {
|
||||
MessageItem(
|
||||
id: id,
|
||||
receiverId: 1,
|
||||
receiverType: "staff",
|
||||
type: 1,
|
||||
type: type,
|
||||
typeName: "系统通知",
|
||||
title: "系统通知",
|
||||
content: "消息内容",
|
||||
@@ -240,6 +283,7 @@ private func makeMessage(id: Int, isRead: Bool = false) -> MessageItem {
|
||||
readAt: "",
|
||||
pushChannel: 1,
|
||||
pushChannelName: "站内信",
|
||||
extraData: extraData,
|
||||
createdAt: "2026-07-09 10:00:00",
|
||||
updatedAt: "2026-07-09 10:00:00"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user