perf: 优化订阅刷新逻辑

This commit is contained in:
richarjiang
2026-09-07 14:06:19 +08:00
parent 88cd8419c8
commit f5c7b7eaac
27 changed files with 3248 additions and 1060 deletions

View File

@@ -25,6 +25,7 @@ const mockUser = {
avatarUrl: null,
role: UserRole.MEMBER,
adminBookingSubscriptionCount: 0,
lastLoginAt: new Date('2024-01-01T00:00:00Z'),
createdAt: new Date(),
updatedAt: new Date(),
}
@@ -109,7 +110,12 @@ describe('AuthService', () => {
where: { openid: OPENID },
})
expect(mockPrismaService.user.create).toHaveBeenCalledWith({
data: { openid: OPENID, nickname: TEST_NICKNAME, adminBookingSubscriptionCount: 0 },
data: {
openid: OPENID,
nickname: TEST_NICKNAME,
adminBookingSubscriptionCount: 0,
lastLoginAt: expect.any(Date),
},
})
expect(result.user).toEqual(expect.objectContaining({
id: mockUser.id,
@@ -148,12 +154,19 @@ describe('AuthService', () => {
await authService.login(loginCode)
expect(mockPrismaService.user.create).toHaveBeenCalledWith({
data: { openid: OPENID, unionid, nickname: TEST_NICKNAME, adminBookingSubscriptionCount: 0 },
data: {
openid: OPENID,
unionid,
nickname: TEST_NICKNAME,
adminBookingSubscriptionCount: 0,
lastLoginAt: expect.any(Date),
},
})
})
it('returns existing user when openid already exists', async () => {
mockPrismaService.user.findUnique.mockResolvedValue(mockUser)
mockPrismaService.user.update.mockResolvedValue(mockUser)
const result = await authService.login(loginCode)
@@ -161,6 +174,10 @@ describe('AuthService', () => {
where: { openid: OPENID },
})
expect(mockPrismaService.user.create).not.toHaveBeenCalled()
expect(mockPrismaService.user.update).toHaveBeenCalledWith({
where: { id: USER_ID },
data: { lastLoginAt: expect.any(Date) },
})
expect(result.user).toEqual(expect.objectContaining({
id: mockUser.id,
nickname: mockUser.nickname,
@@ -171,6 +188,7 @@ describe('AuthService', () => {
it('returns a valid JWT token', async () => {
mockPrismaService.user.findUnique.mockResolvedValue(mockUser)
mockPrismaService.user.update.mockResolvedValue(mockUser)
const result = await authService.login(loginCode)
@@ -183,6 +201,7 @@ describe('AuthService', () => {
it('returns both token and user in result', async () => {
mockPrismaService.user.findUnique.mockResolvedValue(mockUser)
mockPrismaService.user.update.mockResolvedValue(mockUser)
const result = await authService.login(loginCode)
@@ -203,6 +222,7 @@ describe('AuthService', () => {
it('includes active membership count and invite eligibility in login response', async () => {
mockPrismaService.user.findUnique.mockResolvedValue(mockUser)
mockPrismaService.user.update.mockResolvedValue(mockUser)
mockPrismaService.membership.count.mockResolvedValue(2)
const result = await authService.login(loginCode)
@@ -232,6 +252,7 @@ describe('AuthService', () => {
sessionKey: SESSION_KEY,
})
mockPrismaService.user.findUnique.mockResolvedValue(mockUser)
mockPrismaService.user.update.mockResolvedValue(mockUser)
mockJwtService.sign.mockReturnValue(JWT_TOKEN)
await authService.login('login_code')
})