@@ -4,7 +4,11 @@ import { NextFunction as MockNext } from 'jest-express/lib/next';
44import { User } from '../../../models/user' ;
55import { updatePreferences , updateCookieConsent } from '../userPreferences' ;
66import { createMockUser , mockUserPreferences } from '../__testUtils__' ;
7- import { AppThemeOptions , CookieConsentOptions } from '../../../types' ;
7+ import {
8+ AppThemeOptions ,
9+ CookieConsentOptions ,
10+ PublicUser
11+ } from '../../../types' ;
812
913jest . mock ( '../../../models/user' ) ;
1014
@@ -14,6 +18,7 @@ describe('user.controller > user preferences', () => {
1418 let request : any ;
1519 let response : any ;
1620 let next : MockNext ;
21+ let mockUser : PublicUser & Record < string , any > ;
1722
1823 beforeEach ( ( ) => {
1924 request = new MockRequest ( ) ;
@@ -29,11 +34,11 @@ describe('user.controller > user preferences', () => {
2934
3035 describe ( 'updatePreferences' , ( ) => {
3136 it ( 'saves user preferences when user exists' , async ( ) => {
32- const saveMock = jest . fn ( ) . mockResolvedValue ( { } ) ;
33- const mockUser = createMockUser ( {
37+ mockUser = createMockUser ( {
3438 preferences : { ...mockUserPreferences , theme : AppThemeOptions . LIGHT } ,
35- save : saveMock
39+ save : jest . fn ( ) . mockResolvedValue ( null )
3640 } ) ;
41+
3742 User . findById = jest
3843 . fn ( )
3944 . mockReturnValue ( { exec : jest . fn ( ) . mockResolvedValue ( mockUser ) } ) ;
@@ -51,7 +56,7 @@ describe('user.controller > user preferences', () => {
5156 theme : AppThemeOptions . DARK ,
5257 notifications : true
5358 } ) ;
54- expect ( saveMock ) . toHaveBeenCalled ( ) ;
59+ expect ( mockUser . save ) . toHaveBeenCalled ( ) ;
5560 expect ( response . json ) . toHaveBeenCalledWith ( mockUser . preferences ) ;
5661 } ) ;
5762 it ( 'returns 404 when no user is found' , async ( ) => {
@@ -68,11 +73,11 @@ describe('user.controller > user preferences', () => {
6873 expect ( response . json ) . toHaveBeenCalledWith ( { error : 'User not found' } ) ;
6974 } ) ;
7075 it ( 'returns 500 if saving preferences fails' , async ( ) => {
71- const saveMock = jest . fn ( ) . mockRejectedValue ( new Error ( 'DB error' ) ) ;
72- const mockUser = createMockUser ( {
76+ mockUser = createMockUser ( {
7377 preferences : { ...mockUserPreferences , theme : AppThemeOptions . LIGHT } ,
74- save : saveMock
78+ save : jest . fn ( ) . mockRejectedValue ( new Error ( 'DB error' ) )
7579 } ) ;
80+
7681 User . findById = jest
7782 . fn ( )
7883 . mockReturnValue ( { exec : jest . fn ( ) . mockResolvedValue ( mockUser ) } ) ;
@@ -89,10 +94,9 @@ describe('user.controller > user preferences', () => {
8994
9095 describe ( 'updateCookieConsent' , ( ) => {
9196 it ( 'updates cookieConsent when user exists' , async ( ) => {
92- const saveMock = jest . fn ( ) . mockResolvedValue ( { } ) ;
93- const mockUser = createMockUser ( {
97+ mockUser = createMockUser ( {
9498 cookieConsent : CookieConsentOptions . ALL ,
95- save : saveMock
99+ save : jest . fn ( ) . mockResolvedValue ( null )
96100 } ) ;
97101 User . findById = jest
98102 . fn ( )
@@ -105,7 +109,7 @@ describe('user.controller > user preferences', () => {
105109
106110 expect ( User . findById ) . toHaveBeenCalledWith ( 'user1' ) ;
107111 expect ( mockUser . cookieConsent ) . toBe ( CookieConsentOptions . ESSENTIAL ) ;
108- expect ( saveMock ) . toHaveBeenCalled ( ) ;
112+ expect ( mockUser . save ) . toHaveBeenCalled ( ) ;
109113 expect ( response . json ) . toHaveBeenCalledWith ( {
110114 ...mockBaseUser ,
111115 cookieConsent : CookieConsentOptions . ESSENTIAL
@@ -128,10 +132,9 @@ describe('user.controller > user preferences', () => {
128132 } ) ;
129133
130134 it ( 'returns 500 if saving cookieConsent fails' , async ( ) => {
131- const saveMock = jest . fn ( ) . mockRejectedValue ( new Error ( 'DB error' ) ) ;
132- const mockUser = createMockUser ( {
135+ mockUser = createMockUser ( {
133136 cookieConsent : CookieConsentOptions . ALL ,
134- save : saveMock
137+ save : jest . fn ( ) . mockRejectedValue ( new Error ( 'DB error' ) )
135138 } ) ;
136139
137140 User . findById = jest
0 commit comments