test: 补充流水标签重算接口契约

This commit is contained in:
wkc
2026-03-16 17:26:53 +08:00
parent 7fed9927b3
commit 7b2f2e36c0
4 changed files with 118 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
package com.ruoyi.ccdi.project.controller;
import com.ruoyi.ccdi.project.domain.dto.CcdiBankTagRebuildDTO;
import com.ruoyi.ccdi.project.service.ICcdiBankTagService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 项目流水标签控制器
*/
@Tag(name = "项目流水标签")
@RestController
@RequestMapping("/ccdi/project/tags")
public class CcdiBankTagController extends BaseController {
@Resource
private ICcdiBankTagService bankTagService;
/**
* 手动提交流水标签重算任务
*/
@Operation(summary = "手动重算项目流水标签")
@PostMapping("/rebuild")
public AjaxResult rebuild(@Validated @RequestBody CcdiBankTagRebuildDTO dto) {
String operator = SecurityUtils.getUsername();
return success(bankTagService.submitRebuild(dto, operator));
}
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.ccdi.project.domain.dto;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
* 流水标签重算请求参数
*/
@Data
public class CcdiBankTagRebuildDTO {
/** 项目ID */
@NotNull(message = "项目ID不能为空")
private Long projectId;
/** 模型编码 */
private String modelCode;
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.ccdi.project.service;
import com.ruoyi.ccdi.project.domain.dto.CcdiBankTagRebuildDTO;
/**
* 流水标签服务接口
*/
public interface ICcdiBankTagService {
/**
* 提交手动重算任务
*
* @param dto 重算请求
* @param operator 操作人
* @return 提示信息
*/
String submitRebuild(CcdiBankTagRebuildDTO dto, String operator);
}

View File

@@ -0,0 +1,45 @@
package com.ruoyi.ccdi.project.controller;
import com.ruoyi.ccdi.project.domain.dto.CcdiBankTagRebuildDTO;
import com.ruoyi.ccdi.project.service.ICcdiBankTagService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.SecurityUtils;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mockStatic;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class CcdiBankTagControllerTest {
@InjectMocks
private CcdiBankTagController controller;
@Mock
private ICcdiBankTagService bankTagService;
@Test
void rebuild_shouldDelegateProjectAndModelCode() {
CcdiBankTagRebuildDTO dto = new CcdiBankTagRebuildDTO();
dto.setProjectId(40L);
dto.setModelCode("LARGE_TRANSACTION");
when(bankTagService.submitRebuild(dto, "admin")).thenReturn("标签重算任务已提交");
try (MockedStatic<SecurityUtils> mocked = mockStatic(SecurityUtils.class)) {
mocked.when(SecurityUtils::getUsername).thenReturn("admin");
AjaxResult result = controller.rebuild(dto);
assertEquals(200, result.get("code"));
verify(bankTagService).submitRebuild(dto, "admin");
}
}
}