package com.wecom.robot.dto.ai; import com.wecom.robot.dto.InboundMessage; import com.wecom.robot.dto.SignatureInfo; import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import static org.junit.jupiter.api.Assertions.*; class ChatRequestTest { @Test void testChatRequestBuilder() { ChatMessage msg1 = ChatMessage.userMessage("Hello"); ChatMessage msg2 = ChatMessage.assistantMessage("Hi there!"); Map metadata = new HashMap<>(); metadata.put("key", "value"); ChatRequest request = ChatRequest.builder() .sessionId("session-123") .currentMessage("How are you?") .channelType(InboundMessage.CHANNEL_WECHAT) .history(Arrays.asList(msg1, msg2)) .metadata(metadata) .build(); assertEquals("session-123", request.getSessionId()); assertEquals("How are you?", request.getCurrentMessage()); assertEquals(InboundMessage.CHANNEL_WECHAT, request.getChannelType()); assertEquals(2, request.getHistory().size()); assertEquals("value", request.getMetadata().get("key")); } @Test void testFromInboundMessage() { InboundMessage inbound = InboundMessage.builder() .channelType(InboundMessage.CHANNEL_WECHAT) .channelMessageId("msg-123") .sessionKey("session-key-001") .customerId("customer-001") .kfId("kf-001") .content("Hello AI") .build(); ChatRequest request = ChatRequest.fromInboundMessage(inbound); assertEquals("session-key-001", request.getSessionId()); assertEquals("Hello AI", request.getCurrentMessage()); assertEquals(InboundMessage.CHANNEL_WECHAT, request.getChannelType()); } @Test void testFromInboundMessageWithHistory() { InboundMessage inbound = InboundMessage.builder() .sessionKey("session-002") .content("New message") .channelType(InboundMessage.CHANNEL_DOUYIN) .build(); ChatMessage history1 = ChatMessage.userMessage("Previous"); ChatMessage history2 = ChatMessage.assistantMessage("Response"); ChatRequest request = ChatRequest.fromInboundMessage(inbound, Arrays.asList(history1, history2)); assertEquals("session-002", request.getSessionId()); assertEquals("New message", request.getCurrentMessage()); assertEquals(InboundMessage.CHANNEL_DOUYIN, request.getChannelType()); assertEquals(2, request.getHistory().size()); } }