InfraStudentServiceImplTest 5.2 KB

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