updateMemberLogic_test.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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-0151: 正常更新
  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-0152: 不存在
  61. func TestUpdateMember_NotFound(t *testing.T) {
  62. ctx := ctxhelper.SuperAdminCtx()
  63. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  64. logic := NewUpdateMemberLogic(ctx, svcCtx)
  65. err := logic.UpdateMember(&types.UpdateMemberReq{
  66. Id: 999999999,
  67. MemberType: "ADMIN",
  68. })
  69. require.Error(t, err)
  70. ce, ok := err.(*response.CodeError)
  71. require.True(t, ok)
  72. assert.Equal(t, 404, ce.Code())
  73. assert.Equal(t, "成员不存在", ce.Error())
  74. }