@@ -222,6 +222,7 @@ describe('UserService', () => {
222
222
const user = { _id : 'test-id' } as UserDocument ;
223
223
const yesterday = new Date ( ) ;
224
224
yesterday . setDate ( yesterday . getDate ( ) - 1 ) ;
225
+ yesterday . setHours ( 0 , 0 , 0 , 0 ) ;
225
226
226
227
const userData = {
227
228
...user ,
@@ -259,6 +260,28 @@ describe('UserService', () => {
259
260
expect ( result . loginStreak ) . toBe ( 1 ) ;
260
261
expect ( userData . save ) . not . toHaveBeenCalled ( ) ;
261
262
} ) ;
263
+
264
+ it ( 'should reset loginStreak if lastSeen is not yesterday' , async ( ) => {
265
+ const user = { _id : 'test-id' } as UserDocument ;
266
+ const twoDaysAgo = new Date ( ) ;
267
+ twoDaysAgo . setDate ( twoDaysAgo . getDate ( ) - 2 ) ;
268
+ twoDaysAgo . setHours ( 0 , 0 , 0 , 0 ) ;
269
+
270
+ const userData = {
271
+ ...user ,
272
+ lastSeen : twoDaysAgo ,
273
+ loginStreak : 5 ,
274
+ save : jest . fn ( ) . mockResolvedValue ( true ) ,
275
+ } as unknown as UserDocument ;
276
+
277
+ jest . spyOn ( service , 'findByID' ) . mockResolvedValue ( userData ) ;
278
+
279
+ const result = await service . getSelfUserData ( user ) ;
280
+
281
+ expect ( result . lastSeen ) . toBeInstanceOf ( Date ) ;
282
+ expect ( result . loginStreak ) . toBe ( 1 ) ;
283
+ expect ( userData . save ) . toHaveBeenCalled ( ) ;
284
+ } ) ;
262
285
} ) ;
263
286
264
287
describe ( 'usernameExists' , ( ) => {
0 commit comments