将应用自管表的 JdbcClient 数据访问迁移为实体、Mapper、构造器查询和必要的显式 SQL。 保留 AgentScope 自管表及原有业务语义,并补充事务、查询与数据库集成测试。
46 lines
1.8 KiB
Java
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");
|
|
}
|
|
}
|