updateMemberLogic_test.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  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-0219: 正常更新
  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. mt := "ADMIN"
  50. st := int64(2)
  51. err = logic.UpdateMember(&types.UpdateMemberReq{
  52. Id: mId,
  53. MemberType: &mt,
  54. Status: &st,
  55. })
  56. require.NoError(t, err)
  57. updated, err := svcCtx.SysProductMemberModel.FindOne(ctx, mId)
  58. require.NoError(t, err)
  59. assert.Equal(t, "ADMIN", updated.MemberType)
  60. assert.Equal(t, int64(2), updated.Status)
  61. }
  62. // TC-0221: 无效MemberType
  63. func TestUpdateMember_InvalidMemberType(t *testing.T) {
  64. ctx := ctxhelper.SuperAdminCtx()
  65. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  66. conn := testutil.GetTestSqlConn()
  67. now := time.Now().Unix()
  68. uid := testutil.UniqueId()
  69. pRes, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  70. Code: uid, Name: "test_prod", AppKey: uid, AppSecret: "s1",
  71. Status: 1, CreateTime: now, UpdateTime: now,
  72. })
  73. require.NoError(t, err)
  74. pId, _ := pRes.LastInsertId()
  75. uRes, err := svcCtx.SysUserModel.Insert(ctx, &userModel.SysUser{
  76. Username: uid, Password: testutil.HashPassword("pass123"), Nickname: "nick",
  77. Avatar: sql.NullString{}, IsSuperAdmin: 2, MustChangePassword: 2,
  78. Status: 1, CreateTime: now, UpdateTime: now,
  79. })
  80. require.NoError(t, err)
  81. uId, _ := uRes.LastInsertId()
  82. mRes, err := svcCtx.SysProductMemberModel.Insert(ctx, &memberModel.SysProductMember{
  83. ProductCode: uid, UserId: uId, MemberType: "MEMBER",
  84. Status: 1, CreateTime: now, UpdateTime: now,
  85. })
  86. require.NoError(t, err)
  87. mId, _ := mRes.LastInsertId()
  88. t.Cleanup(func() {
  89. testutil.CleanTable(ctx, conn, "`sys_product_member`", mId)
  90. testutil.CleanTable(ctx, conn, "`sys_user`", uId)
  91. testutil.CleanTable(ctx, conn, "`sys_product`", pId)
  92. })
  93. logic := NewUpdateMemberLogic(ctx, svcCtx)
  94. mt := "INVALID"
  95. err = logic.UpdateMember(&types.UpdateMemberReq{
  96. Id: mId,
  97. MemberType: &mt,
  98. })
  99. require.Error(t, err)
  100. ce, ok := err.(*response.CodeError)
  101. require.True(t, ok)
  102. assert.Equal(t, 400, ce.Code())
  103. assert.Equal(t, "无效的成员类型", ce.Error())
  104. }
  105. // TC-0220: 不存在
  106. func TestUpdateMember_NotFound(t *testing.T) {
  107. ctx := ctxhelper.SuperAdminCtx()
  108. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  109. logic := NewUpdateMemberLogic(ctx, svcCtx)
  110. mt := "ADMIN"
  111. err := logic.UpdateMember(&types.UpdateMemberReq{
  112. Id: 999999999,
  113. MemberType: &mt,
  114. })
  115. require.Error(t, err)
  116. ce, ok := err.(*response.CodeError)
  117. require.True(t, ok)
  118. assert.Equal(t, 404, ce.Code())
  119. assert.Equal(t, "成员不存在", ce.Error())
  120. }