roleDetailLogic_test.go 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package role
  2. import (
  3. "errors"
  4. "testing"
  5. "time"
  6. permModel "perms-system-server/internal/model/perm"
  7. roleModel "perms-system-server/internal/model/role"
  8. "perms-system-server/internal/model/roleperm"
  9. "perms-system-server/internal/response"
  10. "perms-system-server/internal/svc"
  11. "perms-system-server/internal/testutil"
  12. "perms-system-server/internal/testutil/ctxhelper"
  13. "perms-system-server/internal/types"
  14. "github.com/stretchr/testify/assert"
  15. "github.com/stretchr/testify/require"
  16. )
  17. // TC-0124: 正常查询
  18. func TestRoleDetail_Normal(t *testing.T) {
  19. ctx := ctxhelper.SuperAdminCtx()
  20. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  21. conn := testutil.GetTestSqlConn()
  22. now := time.Now().Unix()
  23. pc := testutil.UniqueId()
  24. roleRes, err := svcCtx.SysRoleModel.Insert(ctx, &roleModel.SysRole{
  25. ProductCode: pc, Name: testutil.UniqueId(), Remark: "detail test",
  26. Status: 1, PermsLevel: 1, CreateTime: now, UpdateTime: now,
  27. })
  28. require.NoError(t, err)
  29. roleId, _ := roleRes.LastInsertId()
  30. p1Res, err := svcCtx.SysPermModel.Insert(ctx, &permModel.SysPerm{
  31. ProductCode: pc, Name: testutil.UniqueId(), Code: testutil.UniqueId(),
  32. Status: 1, CreateTime: now, UpdateTime: now,
  33. })
  34. require.NoError(t, err)
  35. p1Id, _ := p1Res.LastInsertId()
  36. p2Res, err := svcCtx.SysPermModel.Insert(ctx, &permModel.SysPerm{
  37. ProductCode: pc, Name: testutil.UniqueId(), Code: testutil.UniqueId(),
  38. Status: 1, CreateTime: now, UpdateTime: now,
  39. })
  40. require.NoError(t, err)
  41. p2Id, _ := p2Res.LastInsertId()
  42. rp1Res, err := svcCtx.SysRolePermModel.Insert(ctx, &roleperm.SysRolePerm{
  43. RoleId: roleId, PermId: p1Id, CreateTime: now, UpdateTime: now,
  44. })
  45. require.NoError(t, err)
  46. rp1Id, _ := rp1Res.LastInsertId()
  47. rp2Res, err := svcCtx.SysRolePermModel.Insert(ctx, &roleperm.SysRolePerm{
  48. RoleId: roleId, PermId: p2Id, CreateTime: now, UpdateTime: now,
  49. })
  50. require.NoError(t, err)
  51. rp2Id, _ := rp2Res.LastInsertId()
  52. t.Cleanup(func() {
  53. testutil.CleanTable(ctx, conn, "`sys_role_perm`", rp1Id, rp2Id)
  54. testutil.CleanTable(ctx, conn, "`sys_perm`", p1Id, p2Id)
  55. testutil.CleanTable(ctx, conn, "`sys_role`", roleId)
  56. })
  57. logic := NewRoleDetailLogic(ctx, svcCtx)
  58. resp, err := logic.RoleDetail(&types.RoleDetailReq{Id: roleId})
  59. require.NoError(t, err)
  60. assert.Equal(t, roleId, resp.Id)
  61. assert.Equal(t, pc, resp.ProductCode)
  62. assert.Equal(t, "detail test", resp.Remark)
  63. assert.ElementsMatch(t, []int64{p1Id, p2Id}, resp.PermIds)
  64. }
  65. // TC-0125: 不存在
  66. func TestRoleDetail_NotFound(t *testing.T) {
  67. ctx := ctxhelper.SuperAdminCtx()
  68. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  69. logic := NewRoleDetailLogic(ctx, svcCtx)
  70. resp, err := logic.RoleDetail(&types.RoleDetailReq{Id: 999999999})
  71. assert.Nil(t, resp)
  72. require.Error(t, err)
  73. var ce *response.CodeError
  74. require.True(t, errors.As(err, &ce))
  75. assert.Equal(t, 404, ce.Code())
  76. assert.Equal(t, "角色不存在", ce.Error())
  77. }