Skip to content

Commit 0ee5639

Browse files
committed
test: add test cases for max login streak
1 parent a79e9c7 commit 0ee5639

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

server/src/user/user.service.spec.ts

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,52 @@ describe('UserService', () => {
326326
expect(result.loginCount).toBe(5);
327327
expect(userData.save).not.toHaveBeenCalled();
328328
});
329+
330+
it('should increment maxLoginStreak if login streak exceeds max', async () => {
331+
const user = { _id: 'test-id' } as UserDocument;
332+
333+
const yesterday = new Date();
334+
yesterday.setDate(yesterday.getDate() - 1);
335+
yesterday.setHours(0, 0, 0, 0);
336+
337+
const userData = {
338+
...user,
339+
lastSeen: yesterday,
340+
loginStreak: 8,
341+
maxLoginStreak: 8,
342+
save: jest.fn().mockResolvedValue(true),
343+
} as unknown as UserDocument;
344+
345+
jest.spyOn(service, 'findByID').mockResolvedValue(userData);
346+
347+
const result = await service.getSelfUserData(user);
348+
349+
expect(result.maxLoginStreak).toBe(9);
350+
expect(userData.save).toHaveBeenCalled();
351+
});
352+
353+
it('should not increment maxLoginStreak if login streak is less than the max', async () => {
354+
const user = { _id: 'test-id' } as UserDocument;
355+
356+
const yesterday = new Date();
357+
yesterday.setDate(yesterday.getDate() - 1);
358+
yesterday.setHours(0, 0, 0, 0);
359+
360+
const userData = {
361+
...user,
362+
lastSeen: yesterday,
363+
loginStreak: 4,
364+
maxLoginStreak: 8,
365+
save: jest.fn().mockResolvedValue(true),
366+
} as unknown as UserDocument;
367+
368+
jest.spyOn(service, 'findByID').mockResolvedValue(userData);
369+
370+
const result = await service.getSelfUserData(user);
371+
372+
expect(result.maxLoginStreak).toBe(8);
373+
expect(userData.save).toHaveBeenCalled();
374+
});
329375
});
330376

331377
describe('usernameExists', () => {

0 commit comments

Comments
 (0)