Commit ccba513f3bcfb4ec64029c810e2641f7795f4431

Authored by budliang
1 parent 72422ad2

更新通知公告模块单测

src/main/java/cn/iocoder/dashboard/modules/system/service/notice/impl/SysNoticeServiceImpl.java
... ... @@ -9,6 +9,7 @@ import cn.iocoder.dashboard.modules.system.convert.notice.SysNoticeConvert;
9 9 import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper;
10 10 import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO;
11 11 import cn.iocoder.dashboard.modules.system.service.notice.SysNoticeService;
  12 +import com.google.common.annotations.VisibleForTesting;
12 13 import org.springframework.stereotype.Service;
13 14  
14 15 import javax.annotation.Resource;
... ... @@ -60,7 +61,8 @@ public class SysNoticeServiceImpl implements SysNoticeService {
60 61 noticeMapper.deleteById(id);
61 62 }
62 63  
63   - private void checkNoticeExists(Long id) {
  64 + @VisibleForTesting
  65 + public void checkNoticeExists(Long id) {
64 66 if (id == null) {
65 67 return;
66 68 }
... ...
src/test/java/cn/iocoder/dashboard/modules/system/service/notice/SysNoticeServiceImplTest.java
1 1 package cn.iocoder.dashboard.modules.system.service.notice;
2 2  
3   -import cn.iocoder.dashboard.BaseSpringBootUnitTest;
  3 +import cn.iocoder.dashboard.BaseDbUnitTest;
4 4 import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
  5 +import cn.iocoder.dashboard.common.pojo.PageResult;
5 6 import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeCreateReqVO;
  7 +import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticePageReqVO;
6 8 import cn.iocoder.dashboard.modules.system.controller.notice.vo.SysNoticeUpdateReqVO;
7 9 import cn.iocoder.dashboard.modules.system.dal.dataobject.notice.SysNoticeDO;
8 10 import cn.iocoder.dashboard.modules.system.dal.mysql.notice.SysNoticeMapper;
9 11 import cn.iocoder.dashboard.modules.system.enums.notice.SysNoticeTypeEnum;
  12 +import cn.iocoder.dashboard.modules.system.service.notice.impl.SysNoticeServiceImpl;
  13 +import cn.iocoder.dashboard.util.object.ObjectUtils;
10 14 import org.junit.jupiter.api.Test;
  15 +import org.springframework.context.annotation.Import;
11 16  
12 17 import javax.annotation.Resource;
13 18  
14 19 import java.util.function.Consumer;
15 20  
16 21 import static cn.hutool.core.util.RandomUtil.randomEle;
  22 +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.NOTICE_NOT_FOUND;
17 23 import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
  24 +import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException;
  25 +import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
18 26 import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;
19   -import static org.junit.jupiter.api.Assertions.assertNotNull;
20   -import static org.junit.jupiter.api.Assertions.assertNull;
  27 +import static org.junit.jupiter.api.Assertions.*;
21 28  
22   -
23   -class SysNoticeServiceImplTest extends BaseSpringBootUnitTest {
  29 +@Import(SysNoticeServiceImpl.class)
  30 +class SysNoticeServiceImplTest extends BaseDbUnitTest {
24 31  
25 32 @Resource
26   - private SysNoticeService sysNoticeService;
  33 + private SysNoticeServiceImpl sysNoticeService;
27 34  
28 35 @Resource
29 36 private SysNoticeMapper sysNoticeMapper;
30 37  
31 38 @Test
32   - void testPageNotices_success() {
33   - // todo: 待更新
  39 + public void testPageNotices_success() {
  40 + // 插入前置数据
  41 + SysNoticeDO dbNotice = randomPojo(SysNoticeDO.class, o -> {
  42 + o.setTitle("尼古拉斯赵四来啦!");
  43 + o.setStatus(CommonStatusEnum.ENABLE.getStatus());
  44 + o.setType(randomEle(SysNoticeTypeEnum.values()).getType());
  45 + });
  46 + sysNoticeMapper.insert(dbNotice);
  47 +
  48 + // 测试 title 不匹配
  49 + sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setTitle("尼古拉斯凯奇也来啦!")));
  50 + // 测试 status 不匹配
  51 + sysNoticeMapper.insert(ObjectUtils.clone(dbNotice, o -> o.setStatus(CommonStatusEnum.DISABLE.getStatus())));
  52 +
  53 +
  54 + // 查询
  55 + SysNoticePageReqVO reqVO = new SysNoticePageReqVO();
  56 + reqVO.setTitle("尼古拉斯赵四来啦!");
  57 + reqVO.setStatus(CommonStatusEnum.ENABLE.getStatus());
  58 + PageResult<SysNoticeDO> pageResult = sysNoticeService.pageNotices(reqVO);
  59 +
  60 + // 验证查询结果经过筛选
  61 + assertEquals(1, pageResult.getTotal());
  62 + assertEquals(1, pageResult.getList().size());
  63 + assertPojoEquals(dbNotice, pageResult.getList().get(0));
  64 +
34 65 }
35 66  
36 67 @Test
37   - void testGetNotice_success() {
  68 + public void testGetNotice_success() {
38 69 // 插入前置数据
39   - int noticeId = sysNoticeMapper.insert(randomSysNoticeDO());
  70 + SysNoticeDO dbNotice = randomSysNoticeDO();
  71 + sysNoticeMapper.insert(dbNotice);
40 72  
41 73 // 查询
42   - assertNotNull(sysNoticeService.getNotice(new Long(noticeId)));
  74 + SysNoticeDO notice = sysNoticeService.getNotice(dbNotice.getId());
  75 +
  76 + // 验证插入与读取对象是否一致
  77 + assertNotNull(notice);
  78 + assertPojoEquals(dbNotice, notice);
43 79 }
44 80  
45 81 @Test
46   - void testCreateNotice_success() {
  82 + public void testCreateNotice_success() {
47 83 // 准备参数
48 84 SysNoticeCreateReqVO reqVO = randomSysNoticeCreateReqVO();
49 85  
... ... @@ -57,31 +93,48 @@ class SysNoticeServiceImplTest extends BaseSpringBootUnitTest {
57 93 }
58 94  
59 95 @Test
60   - void testUpdateNotice_success() {
  96 + public void testUpdateNotice_success() {
61 97 // 插入前置数据
62   - int noticeId = sysNoticeMapper.insert(randomSysNoticeDO());
  98 + SysNoticeDO dbNoticeDO = randomSysNoticeDO();
  99 + sysNoticeMapper.insert(dbNoticeDO);
63 100  
64 101 // 准备更新参数
65   - SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(new Long(noticeId)));
  102 + SysNoticeUpdateReqVO reqVO = randomSysNoticeUpdateReqVO(o -> o.setId(dbNoticeDO.getId()));
66 103  
67 104 // 更新
68 105 sysNoticeService.updateNotice(reqVO);
69 106  
70 107 // 检验是否更新成功
71   - SysNoticeDO notice = sysNoticeMapper.selectById(noticeId);
  108 + SysNoticeDO notice = sysNoticeMapper.selectById(reqVO.getId());
72 109 assertPojoEquals(reqVO, notice);
73 110 }
74 111  
75 112 @Test
76   - void testDeleteNotice_success() {
  113 + public void testDeleteNotice_success() {
77 114 // 插入前置数据
78   - int noticeId = sysNoticeMapper.insert(randomSysNoticeDO());
  115 + SysNoticeDO dbNotice = randomSysNoticeDO();
  116 + sysNoticeMapper.insert(dbNotice);
79 117  
80 118 // 删除
81   - sysNoticeService.deleteNotice(new Long(noticeId));
  119 + sysNoticeService.deleteNotice(dbNotice.getId());
82 120  
83 121 // 检查是否删除成功
84   - assertNull(sysNoticeMapper.selectById(noticeId));
  122 + assertNull(sysNoticeMapper.selectById(dbNotice.getId()));
  123 + }
  124 +
  125 + @Test
  126 + public void checkNoticeExists_success() {
  127 + // 插入前置数据
  128 + SysNoticeDO dbNotice = randomSysNoticeDO();
  129 + sysNoticeMapper.insert(dbNotice);
  130 +
  131 + // 成功调用
  132 + sysNoticeService.checkNoticeExists(dbNotice.getId());
  133 + }
  134 +
  135 + @Test
  136 + public void checkNoticeExists_noExists() {
  137 + assertServiceException(() -> sysNoticeService.checkNoticeExists(randomLongId()), NOTICE_NOT_FOUND);
85 138 }
86 139  
87 140 @SafeVarargs
... ...
src/test/resources/sql/create_tables.sql
... ... @@ -129,3 +129,18 @@ CREATE TABLE `sys_user_session` (
129 129 "deleted" bit NOT NULL DEFAULT FALSE,
130 130 PRIMARY KEY (`id`)
131 131 ) COMMENT '用户在线 Session';
  132 +
  133 +CREATE TABLE IF NOT EXISTS "sys_notice" (
  134 + "id" bigint NOT NULL GENERATED BY DEFAULT AS IDENTITY,
  135 + "title" varchar(50) NOT NULL COMMENT '公告标题',
  136 + "content" text NOT NULL COMMENT '公告内容',
  137 + "notice_type" tinyint NOT NULL COMMENT '公告类型(1通知 2公告)',
  138 + "status" tinyint NOT NULL DEFAULT '0' COMMENT '公告状态(0正常 1关闭)',
  139 + "creator" varchar(64) DEFAULT '' COMMENT '创建者',
  140 + "create_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  141 + "updater" varchar(64) DEFAULT '' COMMENT '更新者',
  142 + "update_time" datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  143 + "deleted" bit NOT NULL DEFAULT 0 COMMENT '是否删除',
  144 + PRIMARY KEY("id")
  145 +) COMMENT '通知公告表';
  146 +
... ...