feat(复习):标准思维导图生成与回忆对比
- 新增 review_standard_mind_maps / review_recall_records 数据表 - BuiltinMindMapGenerator:从报告/残片/应用场景规则生成标准导图 - MindMapAiClient 接口 + RemoteAiMindMapClient 预留 - StandardMindMapService:生成/编辑/重新生成/回忆对比 - 对比算法:标题归一化 + Bigram Jaccard 模糊匹配 - ReviewController 新增 6 个端点 - MindMapTreeTool / MindMapNode / CompareResult 工具类 - 完整单元测试(10 个,全部通过) - 更新 docs/review-module-design.md
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
package com.guo.learningprogresstracker.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||
import com.guo.learningprogresstracker.dto.request.CreateTaskApplicationRequest;
|
||||
import com.guo.learningprogresstracker.entity.TaskApplicationEntity;
|
||||
import com.guo.learningprogresstracker.entity.TaskEntity;
|
||||
import com.guo.learningprogresstracker.enums.TaskApplicationStatusEnum;
|
||||
import com.guo.learningprogresstracker.mapper.TaskApplicationMapper;
|
||||
import com.guo.learningprogresstracker.mapper.TasksMapper;
|
||||
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class TasksServiceImplTest {
|
||||
|
||||
@BeforeAll
|
||||
static void initTableInfo() {
|
||||
MybatisConfiguration configuration = new MybatisConfiguration();
|
||||
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), TaskEntity.class);
|
||||
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, ""), TaskApplicationEntity.class);
|
||||
}
|
||||
|
||||
@InjectMocks
|
||||
private TasksServiceImpl tasksService;
|
||||
|
||||
@Mock
|
||||
private TasksMapper tasksMapper;
|
||||
|
||||
@Mock
|
||||
private TaskApplicationMapper taskApplicationMapper;
|
||||
|
||||
@Test
|
||||
void createApplication_shouldUseDefaultStatusWhenStatusInvalid() throws Exception {
|
||||
when(tasksMapper.exists(any())).thenReturn(true);
|
||||
when(taskApplicationMapper.insert(any())).thenAnswer(invocation -> {
|
||||
TaskApplicationEntity entity = invocation.getArgument(0);
|
||||
entity.setId(7);
|
||||
return 1;
|
||||
});
|
||||
|
||||
CreateTaskApplicationRequest request = new CreateTaskApplicationRequest();
|
||||
request.setTaskNum("T1");
|
||||
request.setTitle("Build a demo");
|
||||
request.setStatus("invalid");
|
||||
|
||||
TaskApplicationEntity entity = tasksService.createApplication(request);
|
||||
|
||||
assertEquals(7, entity.getId());
|
||||
assertEquals(TaskApplicationStatusEnum.TODO.getCode(), entity.getStatus());
|
||||
verify(taskApplicationMapper).insert(any(TaskApplicationEntity.class));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user