mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 02:28:03 +08:00 
			
		
		
		
	!12 通知公告模块单测
Merge pull request !12 from lianghusile/feature/notice_test
This commit is contained in:
		| @ -9,6 +9,7 @@ import cn.iocoder.dashboard.modules.system.convert.notice.SysNoticeConvert; | |||||||
| import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper; | import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper; | ||||||
| import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; | import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; | ||||||
| import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService; | import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService; | ||||||
|  | import com.google.common.annotations.VisibleForTesting; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
| @ -60,7 +61,8 @@ public class SysNoticeServiceImpl implements SysNoticeService { | |||||||
|         noticeMapper.deleteById(id); |         noticeMapper.deleteById(id); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void checkNoticeExists(Long id) { |     @VisibleForTesting | ||||||
|  |     public void checkNoticeExists(Long id) { | ||||||
|         if (id == null) { |         if (id == null) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -0,0 +1,164 @@ | |||||||
|  | package cn.iocoder.dashboard.modules.system.service.notice; | ||||||
|  |  | ||||||
|  | import cn.iocoder.dashboard.BaseDbUnitTest; | ||||||
|  | import cn.iocoder.dashboard.common.enums.CommonStatusEnum; | ||||||
|  | import cn.iocoder.dashboard.common.pojo.PageResult; | ||||||
|  | import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO; | ||||||
|  | import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO; | ||||||
|  | import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO; | ||||||
|  | import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO; | ||||||
|  | import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper; | ||||||
|  | import cn.iocoder.dashboard.modules.system.enums.notice.SysNoticeTypeEnum; | ||||||
|  | import cn.iocoder.dashboard.modules.system.service.notice.impl.SysNoticeServiceImpl; | ||||||
|  | import cn.iocoder.dashboard.util.object.ObjectUtils; | ||||||
|  | import org.junit.jupiter.api.Test; | ||||||
|  | import org.springframework.context.annotation.Import; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  |  | ||||||
|  | import java.util.function.Consumer; | ||||||
|  |  | ||||||
|  | import static cn.hutool.core.util.RandomUtil.randomEle; | ||||||
|  | import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND; | ||||||
|  | import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals; | ||||||
|  | import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException; | ||||||
|  | import static cn.iocoder.dashboard.util.RandomUtils.randomLongId; | ||||||
|  | import static cn.iocoder.dashboard.util.RandomUtils.randomPojo; | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
|  |  | ||||||
|  | @Import(SysNoticeServiceImpl.class) | ||||||
|  | class SysNoticeServiceImplTest extends BaseDbUnitTest { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private SysNoticeServiceImpl sysNoticeService; | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private SysNoticeMapper sysNoticeMapper; | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testPageNotices_success() { | ||||||
|  |         // 插入前置数据 | ||||||
|  |         SysNoticeDO dbNotice = randomPojo(SysNoticeDO.class, o -> { | ||||||
|  |             o.setTitle("尼古拉斯赵四来啦!"); | ||||||
|  |             o.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||||
|  |             o.setType(randomEle(SysNoticeTypeEnum.values()).getType()); | ||||||
|  |         }); | ||||||
|  |         sysNoticeMapper.insert(dbNotice); | ||||||
|  |  | ||||||
|  |         // 测试 title 不匹配 | ||||||
|  |         sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!"))); | ||||||
|  |         // 测试 status 不匹配 | ||||||
|  |         sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus()))); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         // 查询 | ||||||
|  |         SysNoticePageReqVO reqVO = new SysNoticePageReqVO(); | ||||||
|  |         reqVO.setTitle("尼古拉斯赵四来啦!"); | ||||||
|  |         reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||||
|  |         PageResult<SysNoticeDO> pageResult = sysNoticeService.pageNotices(reqVO); | ||||||
|  |  | ||||||
|  |         // 验证查询结果经过筛选 | ||||||
|  |         assertEquals(1, pageResult.getTotal()); | ||||||
|  |         assertEquals(1, pageResult.getList().size()); | ||||||
|  |         assertPojoEquals(dbNotice, pageResult.getList().get(0)); | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testGetNotice_success() { | ||||||
|  |         // 插入前置数据 | ||||||
|  |         SysNoticeDO dbNotice = randomSysNoticeDO(); | ||||||
|  |         sysNoticeMapper.insert(dbNotice); | ||||||
|  |  | ||||||
|  |         // 查询 | ||||||
|  |         SysNoticeDO notice = sysNoticeService.getNotice(dbNotice.getId()); | ||||||
|  |  | ||||||
|  |         // 验证插入与读取对象是否一致 | ||||||
|  |         assertNotNull(notice); | ||||||
|  |         assertPojoEquals(dbNotice, notice); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testCreateNotice_success() { | ||||||
|  |         // 准备参数 | ||||||
|  |         SysNoticeCreateReqVO reqVO = randomSysNoticeCreateReqVO(); | ||||||
|  |  | ||||||
|  |         // 校验插入是否成功 | ||||||
|  |         Long noticeId = sysNoticeService.createNotice(reqVO); | ||||||
|  |         assertNotNull(noticeId); | ||||||
|  |  | ||||||
|  |         // 校验插入属性是否正确 | ||||||
|  |         SysNoticeDO notice = sysNoticeMapper.selectById(noticeId); | ||||||
|  |         assertPojoEquals(reqVO, notice); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testUpdateNotice_success() { | ||||||
|  |         // 插入前置数据 | ||||||
|  |         SysNoticeDO dbNoticeDO = randomSysNoticeDO(); | ||||||
|  |         sysNoticeMapper.insert(dbNoticeDO); | ||||||
|  |  | ||||||
|  |         // 准备更新参数 | ||||||
|  |         SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(dbNoticeDO.getId())); | ||||||
|  |  | ||||||
|  |         // 更新 | ||||||
|  |         sysNoticeService.updateNotice(reqVO); | ||||||
|  |  | ||||||
|  |         // 检验是否更新成功 | ||||||
|  |         SysNoticeDO notice = sysNoticeMapper.selectById(reqVO.getId()); | ||||||
|  |         assertPojoEquals(reqVO, notice); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testDeleteNotice_success() { | ||||||
|  |         // 插入前置数据 | ||||||
|  |         SysNoticeDO dbNotice = randomSysNoticeDO(); | ||||||
|  |         sysNoticeMapper.insert(dbNotice); | ||||||
|  |  | ||||||
|  |         // 删除 | ||||||
|  |         sysNoticeService.deleteNotice(dbNotice.getId()); | ||||||
|  |  | ||||||
|  |         // 检查是否删除成功 | ||||||
|  |         assertNull(sysNoticeMapper.selectById(dbNotice.getId())); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void checkNoticeExists_success() { | ||||||
|  |         // 插入前置数据 | ||||||
|  |         SysNoticeDO dbNotice = randomSysNoticeDO(); | ||||||
|  |         sysNoticeMapper.insert(dbNotice); | ||||||
|  |  | ||||||
|  |         // 成功调用 | ||||||
|  |         sysNoticeService.checkNoticeExists(dbNotice.getId()); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void checkNoticeExists_noExists() { | ||||||
|  |         assertServiceException(() -> sysNoticeService.checkNoticeExists(randomLongId()), NOTICE_NOT_FOUND); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @SafeVarargs | ||||||
|  |     private static SysNoticeDO randomSysNoticeDO(Consumer<SysNoticeDO>... consumers) { | ||||||
|  |         SysNoticeDO notice = randomPojo(SysNoticeDO.class, consumers); | ||||||
|  |         notice.setType(randomEle(SysNoticeTypeEnum.values()).getType()); | ||||||
|  |         notice.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||||
|  |         return notice; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @SafeVarargs | ||||||
|  |     private static SysNoticeUpdateReqVO randomSysNoticeUpdateReqVO(Consumer<SysNoticeUpdateReqVO>... consumers) { | ||||||
|  |         SysNoticeUpdateReqVO reqVO = randomPojo(SysNoticeUpdateReqVO.class, consumers); | ||||||
|  |         reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType()); | ||||||
|  |         reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||||
|  |         return reqVO; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private static SysNoticeCreateReqVO randomSysNoticeCreateReqVO() { | ||||||
|  |         SysNoticeCreateReqVO reqVO = randomPojo(SysNoticeCreateReqVO.class); | ||||||
|  |         reqVO.setType(randomEle(SysNoticeTypeEnum.values()).getType()); | ||||||
|  |         reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus()); | ||||||
|  |         return reqVO; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -146,3 +146,18 @@ CREATE TABLE IF NOT EXISTS "sys_post" | |||||||
|     PRIMARY KEY ("id") |     PRIMARY KEY ("id") | ||||||
| ) COMMENT '岗位信息表'; | ) COMMENT '岗位信息表'; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | CREATE TABLE IF NOT EXISTS "sys_notice" ( | ||||||
|  | 	"id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY, | ||||||
|  | 	"title" varchar(50) NOT NULL COMMENT '公告标题', | ||||||
|  | 	"content" text NOT NULL COMMENT '公告内容', | ||||||
|  | 	"notice_type" tinyint NOT NULL COMMENT '公告类型(1通知 2公告)', | ||||||
|  | 	"status" tinyint NOT NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)', | ||||||
|  | 	"creator" varchar(64) DEFAULT '' COMMENT '创建者', | ||||||
|  | 	"create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', | ||||||
|  | 	"updater" varchar(64) DEFAULT '' COMMENT '更新者', | ||||||
|  | 	"update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', | ||||||
|  | 	"deleted" bit NOT NULL DEFAULT 0 COMMENT '是否删除', | ||||||
|  | 	PRIMARY KEY("id") | ||||||
|  | ) COMMENT '通知公告表'; | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 芋道源码
					芋道源码