package user import ( "errors" "testing" "perms-system-server/internal/testutil/ctxhelper" "perms-system-server/internal/testutil/mocks" "perms-system-server/internal/types" "github.com/stretchr/testify/assert" "go.uber.org/mock/gomock" ) // TC-0180: FindListByProductMembers DB 异常时,UserList 透传错误。 // 注:-G 修复合并了成员类型查询到 FindListByProductMembers,原先的 FindMapByProductCodeUserIds // 二次查询路径已被移除,因此本用例调整为验证新的一次性 JOIN 查询失败分支。 func TestUserList_Mock_FindMapError(t *testing.T) { ctrl := gomock.NewController(t) defer ctrl.Finish() dbErr := errors.New("db error") mockUser := mocks.NewMockSysUserModel(ctrl) mockUser.EXPECT().FindListByProductMembers(gomock.Any(), "pc", int64(1), int64(20)). Return(nil, nil, int64(0), dbErr) svcCtx := mocks.NewMockServiceContext(mocks.MockModels{ User: mockUser, }) logic := NewUserListLogic(ctxhelper.SuperAdminCtx(), svcCtx) resp, err := logic.UserList(&types.UserListReq{ ProductCode: "pc", Page: 1, PageSize: 20, }) assert.Error(t, err) assert.ErrorIs(t, err, dbErr) assert.Nil(t, resp) }