Commit ee75b2e28f13fa56b4fc595aaf82208b1b3ef7c1

Authored by timfruit
1 parent 517842c2

对SysMenuServiceImpl#CreateMenu进行单元测试

src/test/java/cn/iocoder/dashboard/modules/system/service/permission/SysMenuServiceTest.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.service.permission;
  2 +
  3 +import cn.iocoder.dashboard.BaseDbUnitTest;
  4 +import cn.iocoder.dashboard.modules.system.controller.permission.vo.menu.SysMenuCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.system.dal.dataobject.permission.SysMenuDO;
  6 +import cn.iocoder.dashboard.modules.system.dal.mysql.permission.SysMenuMapper;
  7 +import cn.iocoder.dashboard.modules.system.enums.permission.MenuTypeEnum;
  8 +import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysMenuProducer;
  9 +import cn.iocoder.dashboard.modules.system.mq.producer.permission.SysPermissionProducer;
  10 +import cn.iocoder.dashboard.modules.system.service.permission.impl.SysMenuServiceImpl;
  11 +import cn.iocoder.dashboard.util.AssertUtils;
  12 +import cn.iocoder.dashboard.util.RandomUtils;
  13 +import org.junit.jupiter.api.Assertions;
  14 +import org.junit.jupiter.api.Test;
  15 +import org.springframework.beans.factory.annotation.Autowired;
  16 +import org.springframework.boot.test.mock.mockito.MockBean;
  17 +import org.springframework.context.annotation.Import;
  18 +
  19 +import javax.annotation.Resource;
  20 +
  21 +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.MENU_PARENT_NOT_DIR_OR_MENU;
  22 +import static cn.iocoder.dashboard.modules.system.enums.SysErrorCodeConstants.MENU_PARENT_NOT_EXISTS;
  23 +import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
  24 +import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;
  25 +import static org.mockito.Mockito.verify;
  26 +
  27 +@Import(SysMenuServiceImpl.class)
  28 +public class SysMenuServiceTest extends BaseDbUnitTest {
  29 +
  30 +
  31 + @Resource
  32 + private SysMenuServiceImpl sysMenuService;
  33 +
  34 + @MockBean
  35 + private SysPermissionService sysPermissionService;
  36 +
  37 + @MockBean
  38 + private SysMenuProducer sysMenuProducer;
  39 +
  40 + @Resource
  41 + private SysMenuMapper menuMapper;
  42 +
  43 +
  44 + @Test
  45 + public void testCreateMenu_success() {
  46 + //构造父目录
  47 + SysMenuDO menuDO = createParentMenuDO(MenuTypeEnum.MENU);
  48 + menuMapper.insert(menuDO);
  49 + Long parentId = menuDO.getId();
  50 +
  51 + //调用
  52 + SysMenuCreateReqVO vo = createReqVO(parentId);
  53 + Long menuId = sysMenuService.createMenu(vo);
  54 +
  55 + //断言
  56 + Assertions.assertNotNull(menuId);
  57 + // 校验记录的属性是否正确
  58 + SysMenuDO ret = menuMapper.selectById(menuId);
  59 + AssertUtils.assertPojoEquals(vo, ret);
  60 + // 校验调用
  61 + verify(sysMenuProducer).sendMenuRefreshMessage();
  62 + }
  63 +
  64 + @Test
  65 + public void testCreateMenu_checkParentExist() {
  66 + Long parentId = RandomUtils.randomLongId();
  67 +
  68 + // 调用
  69 + SysMenuCreateReqVO vo = createReqVO(parentId);
  70 +
  71 + // 调用, 并断言异常
  72 + AssertUtils.assertServiceException(() -> sysMenuService.createMenu(vo), MENU_PARENT_NOT_EXISTS);
  73 + }
  74 +
  75 + @Test
  76 + public void testCreateMenu_checkParentIsDirOrMenu() {
  77 + //构造父目录
  78 + SysMenuDO menuDO = createParentMenuDO(MenuTypeEnum.BUTTON);
  79 + menuMapper.insert(menuDO);
  80 + Long parentId = menuDO.getId();
  81 +
  82 + // 调用
  83 + SysMenuCreateReqVO vo = createReqVO(parentId);
  84 +
  85 + // 调用, 并断言异常
  86 + AssertUtils.assertServiceException(() -> sysMenuService.createMenu(vo), MENU_PARENT_NOT_DIR_OR_MENU);
  87 + }
  88 +
  89 +
  90 + private SysMenuCreateReqVO createReqVO(Long parentId) {
  91 + SysMenuCreateReqVO vo = randomPojo(SysMenuCreateReqVO.class, o -> {
  92 + o.setParentId(parentId);
  93 + o.setName("testSonName");
  94 + o.setType(MenuTypeEnum.MENU.getType());
  95 + o.setStatus(RandomUtils.randomCommonStatus());
  96 + });
  97 + return vo;
  98 + }
  99 +
  100 + private SysMenuDO createParentMenuDO(MenuTypeEnum typeEnum) {
  101 + SysMenuDO menuDO = randomPojo(SysMenuDO.class, o -> {
  102 + o.setName("testParentName");
  103 + o.setType(typeEnum.getType());
  104 + o.setStatus(RandomUtils.randomCommonStatus());
  105 + });
  106 + return menuDO;
  107 + }
  108 +
  109 +}
... ...