updateMemberLogic_test.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package member
  2. import (
  3. "database/sql"
  4. "testing"
  5. "time"
  6. productModel "perms-system-server/internal/model/product"
  7. memberModel "perms-system-server/internal/model/productmember"
  8. userModel "perms-system-server/internal/model/user"
  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-0184: 正常更新
  18. func TestUpdateMember_Normal(t *testing.T) {
  19. ctx := ctxhelper.SuperAdminCtx()
  20. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  21. conn := testutil.GetTestSqlConn()
  22. now := time.Now().Unix()
  23. uid := testutil.UniqueId()
  24. pRes, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  25. Code: uid, Name: "test_prod", AppKey: uid, AppSecret: "s1",
  26. Status: 1, CreateTime: now, UpdateTime: now,
  27. })
  28. require.NoError(t, err)
  29. pId, _ := pRes.LastInsertId()
  30. uRes, err := svcCtx.SysUserModel.Insert(ctx, &userModel.SysUser{
  31. Username: uid, Password: testutil.HashPassword("pass123"), Nickname: "nick",
  32. Avatar: sql.NullString{}, IsSuperAdmin: 2, MustChangePassword: 2,
  33. Status: 1, CreateTime: now, UpdateTime: now,
  34. })
  35. require.NoError(t, err)
  36. uId, _ := uRes.LastInsertId()
  37. mRes, err := svcCtx.SysProductMemberModel.Insert(ctx, &memberModel.SysProductMember{
  38. ProductCode: uid, UserId: uId, MemberType: "MEMBER",
  39. Status: 1, CreateTime: now, UpdateTime: now,
  40. })
  41. require.NoError(t, err)
  42. mId, _ := mRes.LastInsertId()
  43. t.Cleanup(func() {
  44. testutil.CleanTable(ctx, conn, "`sys_product_member`", mId)
  45. testutil.CleanTable(ctx, conn, "`sys_user`", uId)
  46. testutil.CleanTable(ctx, conn, "`sys_product`", pId)
  47. })
  48. logic := NewUpdateMemberLogic(ctx, svcCtx)
  49. err = logic.UpdateMember(&types.UpdateMemberReq{
  50. Id: mId,
  51. MemberType: "ADMIN",
  52. Status: 2,
  53. })
  54. require.NoError(t, err)
  55. updated, err := svcCtx.SysProductMemberModel.FindOne(ctx, mId)
  56. require.NoError(t, err)
  57. assert.Equal(t, "ADMIN", updated.MemberType)
  58. assert.Equal(t, int64(2), updated.Status)
  59. }
  60. // TC-0186: 无效MemberType
  61. func TestUpdateMember_InvalidMemberType(t *testing.T) {
  62. ctx := ctxhelper.SuperAdminCtx()
  63. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  64. conn := testutil.GetTestSqlConn()
  65. now := time.Now().Unix()
  66. uid := testutil.UniqueId()
  67. pRes, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  68. Code: uid, Name: "test_prod", AppKey: uid, AppSecret: "s1",
  69. Status: 1, CreateTime: now, UpdateTime: now,
  70. })
  71. require.NoError(t, err)
  72. pId, _ := pRes.LastInsertId()
  73. uRes, err := svcCtx.SysUserModel.Insert(ctx, &userModel.SysUser{
  74. Username: uid, Password: testutil.HashPassword("pass123"), Nickname: "nick",
  75. Avatar: sql.NullString{}, IsSuperAdmin: 2, MustChangePassword: 2,
  76. Status: 1, CreateTime: now, UpdateTime: now,
  77. })
  78. require.NoError(t, err)
  79. uId, _ := uRes.LastInsertId()
  80. mRes, err := svcCtx.SysProductMemberModel.Insert(ctx, &memberModel.SysProductMember{
  81. ProductCode: uid, UserId: uId, MemberType: "MEMBER",
  82. Status: 1, CreateTime: now, UpdateTime: now,
  83. })
  84. require.NoError(t, err)
  85. mId, _ := mRes.LastInsertId()
  86. t.Cleanup(func() {
  87. testutil.CleanTable(ctx, conn, "`sys_product_member`", mId)
  88. testutil.CleanTable(ctx, conn, "`sys_user`", uId)
  89. testutil.CleanTable(ctx, conn, "`sys_product`", pId)
  90. })
  91. logic := NewUpdateMemberLogic(ctx, svcCtx)
  92. err = logic.UpdateMember(&types.UpdateMemberReq{
  93. Id: mId,
  94. MemberType: "INVALID",
  95. })
  96. require.Error(t, err)
  97. ce, ok := err.(*response.CodeError)
  98. require.True(t, ok)
  99. assert.Equal(t, 400, ce.Code())
  100. assert.Equal(t, "无效的成员类型", ce.Error())
  101. }
  102. // TC-0185: 不存在
  103. func TestUpdateMember_NotFound(t *testing.T) {
  104. ctx := ctxhelper.SuperAdminCtx()
  105. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  106. logic := NewUpdateMemberLogic(ctx, svcCtx)
  107. err := logic.UpdateMember(&types.UpdateMemberReq{
  108. Id: 999999999,
  109. MemberType: "ADMIN",
  110. })
  111. require.Error(t, err)
  112. ce, ok := err.(*response.CodeError)
  113. require.True(t, ok)
  114. assert.Equal(t, 404, ce.Code())
  115. assert.Equal(t, "成员不存在", ce.Error())
  116. }