InfraStudentServiceImplTest 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package cn.iocoder.yudao.module.infra.service.demo;
  2. import org.junit.jupiter.api.Disabled;
  3. import org.junit.jupiter.api.Test;
  4. import org.springframework.boot.test.mock.mockito.MockBean;
  5. import javax.annotation.Resource;
  6. import cn.iocoder.yudao.framework.test.core.ut.BaseDbUnitTest;
  7. import cn.iocoder.yudao.module.infra.controller.admin.demo.vo.*;
  8. import cn.iocoder.yudao.module.infra.dal.dataobject.demo.InfraStudentDO;
  9. import cn.iocoder.yudao.module.infra.dal.mysql.demo.InfraStudentMapper;
  10. import cn.iocoder.yudao.framework.common.pojo.PageResult;
  11. import javax.annotation.Resource;
  12. import org.springframework.context.annotation.Import;
  13. import java.util.*;
  14. import java.time.LocalDateTime;
  15. import static cn.hutool.core.util.RandomUtil.*;
  16. import static cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants.*;
  17. import static cn.iocoder.yudao.framework.test.core.util.AssertUtils.*;
  18. import static cn.iocoder.yudao.framework.test.core.util.RandomUtils.*;
  19. import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.*;
  20. import static cn.iocoder.yudao.framework.common.util.object.ObjectUtils.*;
  21. import static cn.iocoder.yudao.framework.common.util.date.DateUtils.*;
  22. import static org.junit.jupiter.api.Assertions.*;
  23. import static org.mockito.Mockito.*;
  24. /**
  25. * {@link InfraStudentServiceImpl} 的单元测试类
  26. *
  27. * @author 芋道源码
  28. */
  29. @Import(InfraStudentServiceImpl.class)
  30. public class InfraStudentServiceImplTest extends BaseDbUnitTest {
  31. @Resource
  32. private InfraStudentServiceImpl studentService;
  33. @Resource
  34. private InfraStudentMapper studentMapper;
  35. @Test
  36. public void testCreateStudent_success() {
  37. // 准备参数
  38. InfraStudentSaveReqVO createReqVO = randomPojo(InfraStudentSaveReqVO.class).setId(null);
  39. // 调用
  40. Long studentId = studentService.createStudent(createReqVO);
  41. // 断言
  42. assertNotNull(studentId);
  43. // 校验记录的属性是否正确
  44. InfraStudentDO student = studentMapper.selectById(studentId);
  45. assertPojoEquals(createReqVO, student, "id");
  46. }
  47. @Test
  48. public void testUpdateStudent_success() {
  49. // mock 数据
  50. InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class);
  51. studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据
  52. // 准备参数
  53. InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class, o -> {
  54. o.setId(dbStudent.getId()); // 设置更新的 ID
  55. });
  56. // 调用
  57. studentService.updateStudent(updateReqVO);
  58. // 校验是否更新正确
  59. InfraStudentDO student = studentMapper.selectById(updateReqVO.getId()); // 获取最新的
  60. assertPojoEquals(updateReqVO, student);
  61. }
  62. @Test
  63. public void testUpdateStudent_notExists() {
  64. // 准备参数
  65. InfraStudentSaveReqVO updateReqVO = randomPojo(InfraStudentSaveReqVO.class);
  66. // 调用, 并断言异常
  67. assertServiceException(() -> studentService.updateStudent(updateReqVO), STUDENT_NOT_EXISTS);
  68. }
  69. @Test
  70. public void testDeleteStudent_success() {
  71. // mock 数据
  72. InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class);
  73. studentMapper.insert(dbStudent);// @Sql: 先插入出一条存在的数据
  74. // 准备参数
  75. Long id = dbStudent.getId();
  76. // 调用
  77. studentService.deleteStudent(id);
  78. // 校验数据不存在了
  79. assertNull(studentMapper.selectById(id));
  80. }
  81. @Test
  82. public void testDeleteStudent_notExists() {
  83. // 准备参数
  84. Long id = randomLongId();
  85. // 调用, 并断言异常
  86. assertServiceException(() -> studentService.deleteStudent(id), STUDENT_NOT_EXISTS);
  87. }
  88. @Test
  89. @Disabled // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
  90. public void testGetStudentPage() {
  91. // mock 数据
  92. InfraStudentDO dbStudent = randomPojo(InfraStudentDO.class, o -> { // 等会查询到
  93. o.setName(null);
  94. o.setBirthday(null);
  95. o.setSex(null);
  96. o.setEnabled(null);
  97. o.setCreateTime(null);
  98. });
  99. studentMapper.insert(dbStudent);
  100. // 测试 name 不匹配
  101. studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setName(null)));
  102. // 测试 birthday 不匹配
  103. studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setBirthday(null)));
  104. // 测试 sex 不匹配
  105. studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setSex(null)));
  106. // 测试 enabled 不匹配
  107. studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setEnabled(null)));
  108. // 测试 createTime 不匹配
  109. studentMapper.insert(cloneIgnoreId(dbStudent, o -> o.setCreateTime(null)));
  110. // 准备参数
  111. InfraStudentPageReqVO reqVO = new InfraStudentPageReqVO();
  112. reqVO.setName(null);
  113. reqVO.setBirthday(null);
  114. reqVO.setSex(null);
  115. reqVO.setEnabled(null);
  116. reqVO.setCreateTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
  117. // 调用
  118. PageResult<InfraStudentDO> pageResult = studentService.getStudentPage(reqVO);
  119. // 断言
  120. assertEquals(1, pageResult.getTotal());
  121. assertEquals(1, pageResult.getList().size());
  122. assertPojoEquals(dbStudent, pageResult.getList().get(0));
  123. }
  124. }