eight
2024-08-07 74bdfccc43ecc6cdb55898f48efb43aea8e9b324
jh-module-ecg/jh-module-ecg-biz/src/test/java/cn/lihu/jh/module/ecg/service/appointment/AppointmentServiceImplTest.java
@@ -1,202 +1,202 @@
package cn.lihu.jh.module.ecg.service.appointment;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.mock.mockito.MockBean;
import jakarta.annotation.Resource;
import cn.lihu.jh.framework.test.core.ut.BaseDbUnitTest;
import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
import cn.lihu.jh.framework.common.pojo.PageResult;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Import;
import java.util.*;
import java.time.LocalDateTime;
import static cn.hutool.core.util.RandomUtil.*;
import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
import static cn.lihu.jh.framework.test.core.util.AssertUtils.*;
import static cn.lihu.jh.framework.test.core.util.RandomUtils.*;
import static cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils.*;
import static cn.lihu.jh.framework.common.util.object.ObjectUtils.*;
import static cn.lihu.jh.framework.common.util.date.DateUtils.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
/**
 * {@link AppointmentServiceImpl} 的单元测试类
 *
 * @author 马剑波
 */
@Import(AppointmentServiceImpl.class)
public class AppointmentServiceImplTest extends BaseDbUnitTest {
    @Resource
    private AppointmentServiceImpl appointmentService;
    @Resource
    private AppointmentMapper appointmentMapper;
    @Test
    public void testCreateAppointment_success() {
        // 准备参数
        AppointmentSaveReqVO createReqVO = randomPojo(AppointmentSaveReqVO.class).setId(null);
        // 调用
        Integer appointmentId = appointmentService.createAppointment(createReqVO);
        // 断言
        assertNotNull(appointmentId);
        // 校验记录的属性是否正确
        AppointmentDO appointment = appointmentMapper.selectById(appointmentId);
        assertPojoEquals(createReqVO, appointment, "id");
    }
    @Test
    public void testUpdateAppointment_success() {
        // mock 数据
        AppointmentDO dbAppointment = randomPojo(AppointmentDO.class);
        appointmentMapper.insert(dbAppointment);// @Sql: 先插入出一条存在的数据
        // 准备参数
        AppointmentSaveReqVO updateReqVO = randomPojo(AppointmentSaveReqVO.class, o -> {
            o.setId(dbAppointment.getId()); // 设置更新的 ID
        });
        // 调用
        appointmentService.updateAppointment(updateReqVO);
        // 校验是否更新正确
        AppointmentDO appointment = appointmentMapper.selectById(updateReqVO.getId()); // 获取最新的
        assertPojoEquals(updateReqVO, appointment);
    }
    @Test
    public void testUpdateAppointment_notExists() {
        // 准备参数
        AppointmentSaveReqVO updateReqVO = randomPojo(AppointmentSaveReqVO.class);
        // 调用, 并断言异常
        assertServiceException(() -> appointmentService.updateAppointment(updateReqVO), APPOINTMENT_NOT_EXISTS);
    }
    @Test
    public void testDeleteAppointment_success() {
        // mock 数据
        AppointmentDO dbAppointment = randomPojo(AppointmentDO.class);
        appointmentMapper.insert(dbAppointment);// @Sql: 先插入出一条存在的数据
        // 准备参数
        Integer id = dbAppointment.getId();
        // 调用
        appointmentService.deleteAppointment(id);
       // 校验数据不存在了
       assertNull(appointmentMapper.selectById(id));
    }
    @Test
    public void testDeleteAppointment_notExists() {
        // 准备参数
        Integer id = randomIntegerId();
        // 调用, 并断言异常
        assertServiceException(() -> appointmentService.deleteAppointment(id), APPOINTMENT_NOT_EXISTS);
    }
    @Test
    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
    public void testGetAppointmentPage() {
       // mock 数据
       AppointmentDO dbAppointment = randomPojo(AppointmentDO.class, o -> { // 等会查询到
           o.setPatId(null);
           o.setPatName(null);
           o.setPatGender(null);
           o.setPatBirthday(null);
           o.setPatMobile(null);
           o.setPatPhone(null);
           o.setPatIdentityId(null);
           o.setPatAddr(null);
           o.setPatDeptCode(null);
           o.setPatDeptDesc(null);
           o.setPatWardCode(null);
           o.setPatWardDesc(null);
           o.setPatBedNo(null);
           o.setBookId(null);
           o.setBookPeriodStart(null);
           o.setBookPeriodEnd(null);
           o.setBookTime(null);
           o.setBookCheckType(null);
           o.setBookSrc(null);
       });
       appointmentMapper.insert(dbAppointment);
       // 测试 patId 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatId(null)));
       // 测试 patName 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatName(null)));
       // 测试 patGender 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatGender(null)));
       // 测试 patBirthday 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatBirthday(null)));
       // 测试 patMobile 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatMobile(null)));
       // 测试 patPhone 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatPhone(null)));
       // 测试 patIdentityId 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatIdentityId(null)));
       // 测试 patAddr 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatAddr(null)));
       // 测试 patDeptCode 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatDeptCode(null)));
       // 测试 patDeptDesc 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatDeptDesc(null)));
       // 测试 patWardCode 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatWardCode(null)));
       // 测试 patWardDesc 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatWardDesc(null)));
       // 测试 patBedNo 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatBedNo(null)));
       // 测试 bookId 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookId(null)));
       // 测试 bookPeriodStart 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookPeriodStart(null)));
       // 测试 bookPeriodEnd 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookPeriodEnd(null)));
       // 测试 bookTime 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookTime(null)));
       // 测试 bookCheckType 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookCheckType(null)));
       // 测试 bookSrc 不匹配
       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookSrc(null)));
       // 准备参数
       AppointmentPageReqVO reqVO = new AppointmentPageReqVO();
       reqVO.setPatId(null);
       reqVO.setPatName(null);
       reqVO.setPatGender(null);
       reqVO.setPatBirthday(null);
       reqVO.setPatMobile(null);
       reqVO.setPatPhone(null);
       reqVO.setPatIdentityId(null);
       reqVO.setPatAddr(null);
       reqVO.setPatDeptCode(null);
       reqVO.setPatDeptDesc(null);
       reqVO.setPatWardCode(null);
       reqVO.setPatWardDesc(null);
       reqVO.setPatBedNo(null);
       reqVO.setBookId(null);
       reqVO.setBookPeriodStart(null);
       reqVO.setBookPeriodEnd(null);
       reqVO.setBookTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
       reqVO.setBookCheckType(null);
       reqVO.setBookSrc(null);
       // 调用
       PageResult<AppointmentDO> pageResult = appointmentService.getAppointmentPage(reqVO);
       // 断言
       assertEquals(1, pageResult.getTotal());
       assertEquals(1, pageResult.getList().size());
       assertPojoEquals(dbAppointment, pageResult.getList().get(0));
    }
}
//package cn.lihu.jh.module.ecg.service.appointment;
//
//import org.junit.jupiter.api.Disabled;
//import org.junit.jupiter.api.Test;
//import org.springframework.boot.test.mock.mockito.MockBean;
//
//import jakarta.annotation.Resource;
//
//import cn.lihu.jh.framework.test.core.ut.BaseDbUnitTest;
//
//import cn.lihu.jh.module.ecg.controller.admin.appointment.vo.*;
//import cn.lihu.jh.module.ecg.dal.dataobject.appointment.AppointmentDO;
//import cn.lihu.jh.module.ecg.dal.mysql.appointment.AppointmentMapper;
//import cn.lihu.jh.framework.common.pojo.PageResult;
//
//import jakarta.annotation.Resource;
//import org.springframework.context.annotation.Import;
//import java.util.*;
//import java.time.LocalDateTime;
//
//import static cn.hutool.core.util.RandomUtil.*;
//import static cn.lihu.jh.module.ecg.enums.ErrorCodeConstants.*;
//import static cn.lihu.jh.framework.test.core.util.AssertUtils.*;
//import static cn.lihu.jh.framework.test.core.util.RandomUtils.*;
//import static cn.lihu.jh.framework.common.util.date.LocalDateTimeUtils.*;
//import static cn.lihu.jh.framework.common.util.object.ObjectUtils.*;
//import static cn.lihu.jh.framework.common.util.date.DateUtils.*;
//import static org.junit.jupiter.api.Assertions.*;
//import static org.mockito.Mockito.*;
//
///**
// * {@link AppointmentServiceImpl} 的单元测试类
// *
// * @author 马剑波
// */
//@Import(AppointmentServiceImpl.class)
//public class AppointmentServiceImplTest extends BaseDbUnitTest {
//
//    @Resource
//    private AppointmentServiceImpl appointmentService;
//
//    @Resource
//    private AppointmentMapper appointmentMapper;
//
//    @Test
//    public void testCreateAppointment_success() {
//        // 准备参数
//        AppointmentSaveReqVO createReqVO = randomPojo(AppointmentSaveReqVO.class).setId(null);
//
//        // 调用
//        Integer appointmentId = appointmentService.createAppointment(createReqVO);
//        // 断言
//        assertNotNull(appointmentId);
//        // 校验记录的属性是否正确
//        AppointmentDO appointment = appointmentMapper.selectById(appointmentId);
//        assertPojoEquals(createReqVO, appointment, "id");
//    }
//
//    @Test
//    public void testUpdateAppointment_success() {
//        // mock 数据
//        AppointmentDO dbAppointment = randomPojo(AppointmentDO.class);
//        appointmentMapper.insert(dbAppointment);// @Sql: 先插入出一条存在的数据
//        // 准备参数
//        AppointmentSaveReqVO updateReqVO = randomPojo(AppointmentSaveReqVO.class, o -> {
//            o.setId(dbAppointment.getId()); // 设置更新的 ID
//        });
//
//        // 调用
//        appointmentService.updateAppointment(updateReqVO);
//        // 校验是否更新正确
//        AppointmentDO appointment = appointmentMapper.selectById(updateReqVO.getId()); // 获取最新的
//        assertPojoEquals(updateReqVO, appointment);
//    }
//
//    @Test
//    public void testUpdateAppointment_notExists() {
//        // 准备参数
//        AppointmentSaveReqVO updateReqVO = randomPojo(AppointmentSaveReqVO.class);
//
//        // 调用, 并断言异常
//        assertServiceException(() -> appointmentService.updateAppointment(updateReqVO), APPOINTMENT_NOT_EXISTS);
//    }
//
//    @Test
//    public void testDeleteAppointment_success() {
//        // mock 数据
//        AppointmentDO dbAppointment = randomPojo(AppointmentDO.class);
//        appointmentMapper.insert(dbAppointment);// @Sql: 先插入出一条存在的数据
//        // 准备参数
//        Integer id = dbAppointment.getId();
//
//        // 调用
//        appointmentService.deleteAppointment(id);
//       // 校验数据不存在了
//       assertNull(appointmentMapper.selectById(id));
//    }
//
//    @Test
//    public void testDeleteAppointment_notExists() {
//        // 准备参数
//        Integer id = randomIntegerId();
//
//        // 调用, 并断言异常
//        assertServiceException(() -> appointmentService.deleteAppointment(id), APPOINTMENT_NOT_EXISTS);
//    }
//
//    @Test
//    @Disabled  // TODO 请修改 null 为需要的值,然后删除 @Disabled 注解
//    public void testGetAppointmentPage() {
//       // mock 数据
//       AppointmentDO dbAppointment = randomPojo(AppointmentDO.class, o -> { // 等会查询到
//           o.setPatId(null);
//           o.setPatName(null);
//           o.setPatGender(null);
//           o.setPatBirthday(null);
//           o.setPatMobile(null);
//           o.setPatPhone(null);
//           o.setPatIdentityId(null);
//           o.setPatAddr(null);
//           o.setPatDeptCode(null);
//           o.setPatDeptDesc(null);
//           o.setPatWardCode(null);
//           o.setPatWardDesc(null);
//           o.setPatBedNo(null);
//           o.setBookId(null);
//           o.setBookPeriodStart(null);
//           o.setBookPeriodEnd(null);
//           o.setBookTime(null);
//           o.setBookCheckType(null);
//           o.setBookSrc(null);
//       });
//       appointmentMapper.insert(dbAppointment);
//       // 测试 patId 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatId(null)));
//       // 测试 patName 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatName(null)));
//       // 测试 patGender 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatGender(null)));
//       // 测试 patBirthday 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatBirthday(null)));
//       // 测试 patMobile 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatMobile(null)));
//       // 测试 patPhone 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatPhone(null)));
//       // 测试 patIdentityId 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatIdentityId(null)));
//       // 测试 patAddr 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatAddr(null)));
//       // 测试 patDeptCode 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatDeptCode(null)));
//       // 测试 patDeptDesc 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatDeptDesc(null)));
//       // 测试 patWardCode 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatWardCode(null)));
//       // 测试 patWardDesc 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatWardDesc(null)));
//       // 测试 patBedNo 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setPatBedNo(null)));
//       // 测试 bookId 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookId(null)));
//       // 测试 bookPeriodStart 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookPeriodStart(null)));
//       // 测试 bookPeriodEnd 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookPeriodEnd(null)));
//       // 测试 bookTime 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookTime(null)));
//       // 测试 bookCheckType 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookCheckType(null)));
//       // 测试 bookSrc 不匹配
//       appointmentMapper.insert(cloneIgnoreId(dbAppointment, o -> o.setBookSrc(null)));
//       // 准备参数
//       AppointmentPageReqVO reqVO = new AppointmentPageReqVO();
//       reqVO.setPatId(null);
//       reqVO.setPatName(null);
//       reqVO.setPatGender(null);
//       reqVO.setPatBirthday(null);
//       reqVO.setPatMobile(null);
//       reqVO.setPatPhone(null);
//       reqVO.setPatIdentityId(null);
//       reqVO.setPatAddr(null);
//       reqVO.setPatDeptCode(null);
//       reqVO.setPatDeptDesc(null);
//       reqVO.setPatWardCode(null);
//       reqVO.setPatWardDesc(null);
//       reqVO.setPatBedNo(null);
//       reqVO.setBookId(null);
//       reqVO.setBookPeriodStart(null);
//       reqVO.setBookPeriodEnd(null);
//       reqVO.setBookTime(buildBetweenTime(2023, 2, 1, 2023, 2, 28));
//       reqVO.setBookCheckType(null);
//       reqVO.setBookSrc(null);
//
//       // 调用
//       PageResult<AppointmentDO> pageResult = appointmentService.getAppointmentPage(reqVO);
//       // 断言
//       assertEquals(1, pageResult.getTotal());
//       assertEquals(1, pageResult.getList().size());
//       assertPojoEquals(dbAppointment, pageResult.getList().get(0));
//    }
//
//}