Files
ManuAgent/server/src/test/java/tech/easyflow/manuagent/agent/AgentEventServiceQueryTest.java
Zhu Junhao e968a8ddc1 重构:使用 MyBatis-Flex 迁移应用 ORM
将应用自管表的 JdbcClient 数据访问迁移为实体、Mapper、构造器查询和必要的显式 SQL。

保留 AgentScope 自管表及原有业务语义,并补充事务、查询与数据库集成测试。
2026-08-31 12:13:06 +08:00

46 lines
1.8 KiB
Java

package tech.easyflow.manuagent.agent;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mybatisflex.core.query.QueryWrapper;
import java.util.List;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import tech.easyflow.manuagent.entity.AgentEventEntity;
import tech.easyflow.manuagent.mapper.AgentEventMapper;
/**
* 验证 Agent 事件回放查询在 ORM 迁移后保持原 JDBC 字段和游标语义。
*/
class AgentEventServiceQueryTest {
/**
* 事件回放只读取响应所需字段,不加载仅用于外部追踪的事件标识。
*/
@Test
void shouldSelectOnlyEventViewColumnsWhenListingAfterCursor() {
AgentEventMapper mapper = mock(AgentEventMapper.class);
AgentEventEntity event = new AgentEventEntity();
event.setId(1L);
event.setProjectId(UUID.randomUUID());
event.setPayloadJson("{}");
when(mapper.selectListByQuery(any(QueryWrapper.class))).thenReturn(List.of(event));
AgentEventService service = new AgentEventService(mapper, new ObjectMapper());
service.listAfter(event.getProjectId(), 0L, 100);
ArgumentCaptor<QueryWrapper> queryCaptor = ArgumentCaptor.forClass(QueryWrapper.class);
verify(mapper).selectListByQuery(queryCaptor.capture());
String sql = queryCaptor.getValue().toSQL().toLowerCase(java.util.Locale.ROOT);
assertThat(sql)
.contains("project_id", "run_id", "event_type", "payload", "created_at")
.doesNotContain("event_id");
}
}