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));
|
}
|
|
}
|