package com.iailab.module.system.service.notice; import com.iailab.framework.common.enums.CommonStatusEnum; import com.iailab.framework.common.pojo.PageResult; import com.iailab.framework.test.core.ut.BaseDbUnitTest; import com.iailab.module.system.controller.admin.notice.vo.NoticePageReqVO; import com.iailab.module.system.controller.admin.notice.vo.NoticeSaveReqVO; import com.iailab.module.system.dal.dataobject.notice.NoticeDO; import com.iailab.module.system.dal.mysql.notice.NoticeMapper; 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.randomLongId; import static com.iailab.framework.test.core.util.RandomUtils.randomPojo; import static com.iailab.module.system.enums.ErrorCodeConstants.NOTICE_NOT_FOUND; import static org.junit.jupiter.api.Assertions.*; @Import(NoticeServiceImpl.class) class NoticeServiceImplTest extends BaseDbUnitTest { @Resource private NoticeServiceImpl noticeService; @Resource private NoticeMapper noticeMapper; @Test public void testGetNoticePage_success() { // 插入前置数据 NoticeDO dbNotice = randomPojo(NoticeDO.class, o -> { o.setTitle("尼古拉斯赵四来啦!"); o.setStatus(CommonStatusEnum.ENABLE.getStatus()); }); noticeMapper.insert(dbNotice); // 测试 title 不匹配 noticeMapper.insert(cloneIgnoreId(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!"))); // 测试 status 不匹配 noticeMapper.insert(cloneIgnoreId(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); // 准备参数 NoticePageReqVO reqVO = new NoticePageReqVO(); reqVO.setTitle("尼古拉斯赵四来啦!"); reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 调用 PageResult pageResult = noticeService.getNoticePage(reqVO); // 验证查询结果经过筛选 assertEquals(1, pageResult.getTotal()); assertEquals(1, pageResult.getList().size()); assertPojoEquals(dbNotice, pageResult.getList().get(0)); } @Test public void testGetNotice_success() { // 插入前置数据 NoticeDO dbNotice = randomPojo(NoticeDO.class); noticeMapper.insert(dbNotice); // 查询 NoticeDO notice = noticeService.getNotice(dbNotice.getId()); // 验证插入与读取对象是否一致 assertNotNull(notice); assertPojoEquals(dbNotice, notice); } @Test public void testCreateNotice_success() { // 准备参数 NoticeSaveReqVO reqVO = randomPojo(NoticeSaveReqVO.class) .setId(null); // 避免 id 被赋值 // 调用 Long noticeId = noticeService.createNotice(reqVO); // 校验插入属性是否正确 assertNotNull(noticeId); NoticeDO notice = noticeMapper.selectById(noticeId); assertPojoEquals(reqVO, notice, "id"); } @Test public void testUpdateNotice_success() { // 插入前置数据 NoticeDO dbNoticeDO = randomPojo(NoticeDO.class); noticeMapper.insert(dbNoticeDO); // 准备更新参数 NoticeSaveReqVO reqVO = randomPojo(NoticeSaveReqVO.class, o -> o.setId(dbNoticeDO.getId())); // 更新 noticeService.updateNotice(reqVO); // 检验是否更新成功 NoticeDO notice = noticeMapper.selectById(reqVO.getId()); assertPojoEquals(reqVO, notice); } @Test public void testDeleteNotice_success() { // 插入前置数据 NoticeDO dbNotice = randomPojo(NoticeDO.class); noticeMapper.insert(dbNotice); // 删除 noticeService.deleteNotice(dbNotice.getId()); // 检查是否删除成功 assertNull(noticeMapper.selectById(dbNotice.getId())); } @Test public void testValidateNoticeExists_success() { // 插入前置数据 NoticeDO dbNotice = randomPojo(NoticeDO.class); noticeMapper.insert(dbNotice); // 成功调用 noticeService.validateNoticeExists(dbNotice.getId()); } @Test public void testValidateNoticeExists_noExists() { assertServiceException(() -> noticeService.validateNoticeExists(randomLongId()), NOTICE_NOT_FOUND); } }