package com.iailab.module.report.service.goview; import com.iailab.framework.common.pojo.PageParam; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.test.core.ut.BaseDbUnitTest; import com.iailab.module.report.controller.admin.goview.vo.project.GoViewProjectCreateReqVO; import com.iailab.module.report.controller.admin.goview.vo.project.GoViewProjectUpdateReqVO; import com.iailab.module.report.dal.dataobject.goview.GoViewProjectDO; import com.iailab.module.report.dal.mysql.goview.GoViewProjectMapper; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Import; import javax.annotation.Resource; import static com.iailab.framework.common.util.object.ObjectUtils.cloneIgnoreId; import static com.iailab.framework.test.core.util.AssertUtils.assertPojoEquals; import static com.iailab.framework.test.core.util.AssertUtils.assertServiceException; import static com.iailab.framework.test.core.util.RandomUtils.*; import static com.iailab.module.report.enums.ErrorCodeConstants.GO_VIEW_PROJECT_NOT_EXISTS; import static org.junit.jupiter.api.Assertions.*; /** * {@link GoViewProjectServiceImpl} çš„å•å…ƒæµ‹è¯•ç±» * * @author iailab */ @Import(GoViewProjectServiceImpl.class) public class GoViewProjectServiceImplTest extends BaseDbUnitTest { @Resource private GoViewProjectServiceImpl goViewProjectService; @Resource private GoViewProjectMapper goViewProjectMapper; @Test public void testCreateProject_success() { // 准备å‚æ•° GoViewProjectCreateReqVO reqVO = randomPojo(GoViewProjectCreateReqVO.class); // 调用 Long goViewProjectId = goViewProjectService.createProject(reqVO); // æ–言 assertNotNull(goViewProjectId); // æ ¡éªŒè®°å½•çš„å±žæ€§æ˜¯å¦æ£ç¡® GoViewProjectDO goViewProject = goViewProjectMapper.selectById(goViewProjectId); assertPojoEquals(reqVO, goViewProject); } @Test public void testUpdateProject_success() { // mock æ•°æ® GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class); goViewProjectMapper.insert(dbGoViewProject);// @Sql: å…ˆæ’入出一æ¡å˜åœ¨çš„æ•°æ® // 准备å‚æ•° GoViewProjectUpdateReqVO reqVO = randomPojo(GoViewProjectUpdateReqVO.class, o -> { o.setId(dbGoViewProject.getId()); // 设置更新的 ID o.setStatus(randomCommonStatus()); }); // 调用 goViewProjectService.updateProject(reqVO); // æ ¡éªŒæ˜¯å¦æ›´æ–°æ£ç¡® GoViewProjectDO goViewProject = goViewProjectMapper.selectById(reqVO.getId()); // 获å–最新的 assertPojoEquals(reqVO, goViewProject); } @Test public void testUpdateProject_notExists() { // 准备å‚æ•° GoViewProjectUpdateReqVO reqVO = randomPojo(GoViewProjectUpdateReqVO.class); // 调用, 并æ–言异常 assertServiceException(() -> goViewProjectService.updateProject(reqVO), GO_VIEW_PROJECT_NOT_EXISTS); } @Test public void testDeleteProject_success() { // mock æ•°æ® GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class); goViewProjectMapper.insert(dbGoViewProject);// @Sql: å…ˆæ’入出一æ¡å˜åœ¨çš„æ•°æ® // 准备å‚æ•° Long id = dbGoViewProject.getId(); // 调用 goViewProjectService.deleteProject(id); // æ ¡éªŒæ•°æ®ä¸å˜åœ¨äº† assertNull(goViewProjectMapper.selectById(id)); } @Test public void testDeleteProject_notExists() { // 准备å‚æ•° Long id = randomLongId(); // 调用, 并æ–言异常 assertServiceException(() -> goViewProjectService.deleteProject(id), GO_VIEW_PROJECT_NOT_EXISTS); } @Test public void testGetProject() { // mock æ•°æ® GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class); goViewProjectMapper.insert(dbGoViewProject);// @Sql: å…ˆæ’入出一æ¡å˜åœ¨çš„æ•°æ® // 准备å‚æ•° Long id = dbGoViewProject.getId(); // 调用 GoViewProjectDO goViewProject = goViewProjectService.getProject(id); // æ–言 assertPojoEquals(dbGoViewProject, goViewProject); } @Test public void testGetMyGoViewProjectPage() { // mock æ•°æ® GoViewProjectDO dbGoViewProject = randomPojo(GoViewProjectDO.class, o -> { // ç‰ä¼šæŸ¥è¯¢åˆ° o.setCreator("1"); }); goViewProjectMapper.insert(dbGoViewProject); // 测试 userId ä¸åŒ¹é… goViewProjectMapper.insert(cloneIgnoreId(dbGoViewProject, o -> o.setCreator("2"))); // 准备å‚æ•° PageParam reqVO = new PageParam(); Long userId = 1L; // 调用 PageResult<GoViewProjectDO> pageResult = goViewProjectService.getMyProjectPage(reqVO, userId); // æ–言 assertEquals(1, pageResult.getTotal()); assertEquals(1, pageResult.getList().size()); assertPojoEquals(dbGoViewProject, pageResult.getList().get(0)); } }