memberListLogic_test.go 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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/svc"
  10. "perms-system-server/internal/testutil"
  11. "perms-system-server/internal/testutil/ctxhelper"
  12. "perms-system-server/internal/types"
  13. "github.com/stretchr/testify/assert"
  14. "github.com/stretchr/testify/require"
  15. )
  16. // TC-0187: 正常查询(批量查用户)
  17. func TestMemberList_Normal(t *testing.T) {
  18. ctx := ctxhelper.SuperAdminCtx()
  19. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  20. conn := testutil.GetTestSqlConn()
  21. now := time.Now().Unix()
  22. uid := testutil.UniqueId()
  23. pRes, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  24. Code: uid, Name: "test_prod", AppKey: uid, AppSecret: "s1",
  25. Status: 1, CreateTime: now, UpdateTime: now,
  26. })
  27. require.NoError(t, err)
  28. pId, _ := pRes.LastInsertId()
  29. uRes, err := svcCtx.SysUserModel.Insert(ctx, &userModel.SysUser{
  30. Username: uid, Password: testutil.HashPassword("pass"), Nickname: "TestNick",
  31. Avatar: sql.NullString{}, IsSuperAdmin: 2, MustChangePassword: 2,
  32. Status: 1, CreateTime: now, UpdateTime: now,
  33. })
  34. require.NoError(t, err)
  35. uId, _ := uRes.LastInsertId()
  36. mRes, err := svcCtx.SysProductMemberModel.Insert(ctx, &memberModel.SysProductMember{
  37. ProductCode: uid, UserId: uId, MemberType: "MEMBER",
  38. Status: 1, CreateTime: now, UpdateTime: now,
  39. })
  40. require.NoError(t, err)
  41. mId, _ := mRes.LastInsertId()
  42. t.Cleanup(func() {
  43. testutil.CleanTable(ctx, conn, "`sys_product_member`", mId)
  44. testutil.CleanTable(ctx, conn, "`sys_user`", uId)
  45. testutil.CleanTable(ctx, conn, "`sys_product`", pId)
  46. })
  47. logic := NewMemberListLogic(ctx, svcCtx)
  48. resp, err := logic.MemberList(&types.MemberListReq{
  49. ProductCode: uid,
  50. Page: 1,
  51. PageSize: 10,
  52. })
  53. require.NoError(t, err)
  54. assert.Equal(t, int64(1), resp.Total)
  55. items, ok := resp.List.([]types.MemberItem)
  56. require.True(t, ok)
  57. require.Len(t, items, 1)
  58. assert.Equal(t, uid, items[0].Username)
  59. assert.Equal(t, "TestNick", items[0].Nickname)
  60. assert.Equal(t, "MEMBER", items[0].MemberType)
  61. assert.Equal(t, uId, items[0].UserId)
  62. }
  63. // TC-0190: 空成员列表
  64. func TestMemberList_Empty(t *testing.T) {
  65. ctx := ctxhelper.SuperAdminCtx()
  66. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  67. uid := testutil.UniqueId()
  68. logic := NewMemberListLogic(ctx, svcCtx)
  69. resp, err := logic.MemberList(&types.MemberListReq{
  70. ProductCode: uid,
  71. Page: 1,
  72. PageSize: 10,
  73. })
  74. require.NoError(t, err)
  75. assert.Equal(t, int64(0), resp.Total)
  76. }
  77. // TC-0189: pageSize超过上限
  78. func TestMemberList_PageSizeLimit(t *testing.T) {
  79. ctx := ctxhelper.SuperAdminCtx()
  80. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  81. uid := testutil.UniqueId()
  82. logic := NewMemberListLogic(ctx, svcCtx)
  83. resp, err := logic.MemberList(&types.MemberListReq{
  84. ProductCode: uid,
  85. Page: 1,
  86. PageSize: 200,
  87. })
  88. require.NoError(t, err)
  89. assert.Equal(t, int64(0), resp.Total)
  90. }
  91. // TC-0188: 成员用户已删除
  92. func TestMemberList_DeletedUserEmptyInfo(t *testing.T) {
  93. ctx := ctxhelper.SuperAdminCtx()
  94. svcCtx := svc.NewServiceContext(testutil.GetTestConfig())
  95. conn := testutil.GetTestSqlConn()
  96. now := time.Now().Unix()
  97. uid := testutil.UniqueId()
  98. pRes, err := svcCtx.SysProductModel.Insert(ctx, &productModel.SysProduct{
  99. Code: uid, Name: "test_prod", AppKey: uid, AppSecret: "s1",
  100. Status: 1, CreateTime: now, UpdateTime: now,
  101. })
  102. require.NoError(t, err)
  103. pId, _ := pRes.LastInsertId()
  104. nonExistUserId := int64(999999888)
  105. mRes, err := svcCtx.SysProductMemberModel.Insert(ctx, &memberModel.SysProductMember{
  106. ProductCode: uid, UserId: nonExistUserId, MemberType: "MEMBER",
  107. Status: 1, CreateTime: now, UpdateTime: now,
  108. })
  109. require.NoError(t, err)
  110. mId, _ := mRes.LastInsertId()
  111. t.Cleanup(func() {
  112. testutil.CleanTable(ctx, conn, "`sys_product_member`", mId)
  113. testutil.CleanTable(ctx, conn, "`sys_product`", pId)
  114. })
  115. logic := NewMemberListLogic(ctx, svcCtx)
  116. resp, err := logic.MemberList(&types.MemberListReq{
  117. ProductCode: uid,
  118. Page: 1,
  119. PageSize: 10,
  120. })
  121. require.NoError(t, err)
  122. require.NotNil(t, resp)
  123. assert.Equal(t, int64(1), resp.Total)
  124. items, ok := resp.List.([]types.MemberItem)
  125. require.True(t, ok)
  126. require.Len(t, items, 1)
  127. assert.Equal(t, "", items[0].Username)
  128. assert.Equal(t, "", items[0].Nickname)
  129. }