@@ -326,6 +326,52 @@ describe('UserService', () => {
326
326
expect ( result . loginCount ) . toBe ( 5 ) ;
327
327
expect ( userData . save ) . not . toHaveBeenCalled ( ) ;
328
328
} ) ;
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
+ } ) ;
329
375
} ) ;
330
376
331
377
describe ( 'usernameExists' , ( ) => {
0 commit comments