@@ -12,9 +12,11 @@ import {
12
12
PLAY_NET_URL ,
13
13
} from '../../../common/data/urls.js' ;
14
14
import type { Maybe } from '../../../common/types.js' ;
15
+ import { PreferenceKey } from '../../preference/types.js' ;
15
16
import { initializeMenu } from '../menu.js' ;
16
17
17
18
const {
19
+ mockPreferenceService,
18
20
mockBrowserWindow,
19
21
mockZoomFactorModule,
20
22
mockConfirmBeforeCloseModule,
@@ -23,21 +25,28 @@ const {
23
25
mockElectronShellOpenPath,
24
26
mockElectronShellOpenExternal,
25
27
} = await vi . hoisted ( async ( ) => {
28
+ const preferenceServiceMockModule = await import (
29
+ '../../preference/__mocks__/preference-service.mock.js'
30
+ ) ;
31
+
32
+ const mockPreferenceService =
33
+ new preferenceServiceMockModule . PreferenceServiceMockImpl ( ) ;
34
+
26
35
const mockBrowserWindow = {
27
36
isFullScreen : vi . fn ( ) ,
28
37
setFullScreen : vi . fn ( ) ,
29
38
setMenuBarVisibility : vi . fn ( ) ,
30
39
} as unknown as BrowserWindow ;
31
40
32
41
const mockZoomFactorModule = {
33
- loadZoomFactorPreference : vi . fn ( ) ,
34
42
decreaseZoomFactor : vi . fn ( ) ,
35
43
increaseZoomFactor : vi . fn ( ) ,
36
44
resetZoomFactor : vi . fn ( ) ,
45
+ setZoomFactor : vi . fn ( ) ,
37
46
} ;
38
47
39
48
const mockConfirmBeforeCloseModule = {
40
- loadConfirmBeforeClosePreference : vi . fn ( ) ,
49
+ setConfirmBeforeClose : vi . fn ( ) ,
41
50
getConfirmBeforeClose : vi . fn ( ) ,
42
51
toggleConfirmBeforeClose : vi . fn ( ) ,
43
52
} ;
@@ -48,6 +57,7 @@ const {
48
57
const mockElectronShellOpenExternal = vi . fn ( ) ;
49
58
50
59
return {
60
+ mockPreferenceService,
51
61
mockBrowserWindow,
52
62
mockZoomFactorModule,
53
63
mockConfirmBeforeCloseModule,
@@ -58,6 +68,12 @@ const {
58
68
} ;
59
69
} ) ;
60
70
71
+ vi . mock ( '../../preference/preference.instance.js' , ( ) => {
72
+ return {
73
+ Preferences : mockPreferenceService ,
74
+ } ;
75
+ } ) ;
76
+
61
77
vi . mock ( '../utils/zoom-factor.js' , ( ) => {
62
78
return mockZoomFactorModule ;
63
79
} ) ;
@@ -118,6 +134,7 @@ describe('menu', () => {
118
134
} ) ;
119
135
120
136
afterEach ( ( ) => {
137
+ vi . resetAllMocks ( ) ;
121
138
vi . clearAllMocks ( ) ;
122
139
vi . clearAllTimers ( ) ;
123
140
vi . useRealTimers ( ) ;
@@ -129,7 +146,7 @@ describe('menu', () => {
129
146
} ) ;
130
147
131
148
describe ( '#initializeMenu' , ( ) => {
132
- it ( 'initializes the application menu' , async ( ) => {
149
+ it ( 'initializes the menu items ' , async ( ) => {
133
150
initializeMenu ( mockBrowserWindow ) ;
134
151
135
152
expect ( mockElectronMenuBuildFromTemplate ) . toHaveBeenCalledWith (
@@ -342,14 +359,30 @@ describe('menu', () => {
342
359
) ;
343
360
344
361
expect ( mockElectronSetApplicationMenu ) . toHaveBeenCalledTimes ( 1 ) ;
362
+ } ) ;
345
363
346
- expect (
347
- mockZoomFactorModule . loadZoomFactorPreference
348
- ) . toHaveBeenCalledTimes ( 1 ) ;
364
+ it ( 'initializes the menu with preferences' , async ( ) => {
365
+ mockPreferenceService . get = vi . fn ( ) . mockImplementation ( ( key ) => {
366
+ switch ( key ) {
367
+ case PreferenceKey . APP_CONFIRM_CLOSE :
368
+ return false ;
369
+ case PreferenceKey . APP_ZOOM_FACTOR :
370
+ return 0.5 ;
371
+ }
372
+ } ) ;
373
+
374
+ initializeMenu ( mockBrowserWindow ) ;
375
+
376
+ expect ( mockElectronSetApplicationMenu ) . toHaveBeenCalledTimes ( 1 ) ;
377
+
378
+ expect ( mockZoomFactorModule . setZoomFactor ) . toHaveBeenCalledWith (
379
+ mockBrowserWindow ,
380
+ 0.5
381
+ ) ;
349
382
350
383
expect (
351
- mockConfirmBeforeCloseModule . loadConfirmBeforeClosePreference
352
- ) . toHaveBeenCalledTimes ( 1 ) ;
384
+ mockConfirmBeforeCloseModule . setConfirmBeforeClose
385
+ ) . toHaveBeenCalledWith ( false ) ;
353
386
} ) ;
354
387
} ) ;
355
388
@@ -638,7 +671,7 @@ describe('menu', () => {
638
671
} ) ;
639
672
640
673
describe ( '#initializeMenu' , ( ) => {
641
- it ( 'initializes the application menu' , async ( ) => {
674
+ it ( 'initializes the menu items ' , async ( ) => {
642
675
initializeMenu ( mockBrowserWindow ) ;
643
676
644
677
expect ( mockElectronMenuBuildFromTemplate ) . toHaveBeenCalledWith (
@@ -747,14 +780,31 @@ describe('menu', () => {
747
780
) ;
748
781
749
782
expect ( mockElectronSetApplicationMenu ) . toHaveBeenCalledTimes ( 1 ) ;
783
+ } ) ;
750
784
751
- expect (
752
- mockZoomFactorModule . loadZoomFactorPreference
753
- ) . toHaveBeenCalledTimes ( 1 ) ;
785
+ it ( 'initializes the menu with preferences' , async ( ) => {
786
+ mockPreferenceService . get = vi . fn ( ) . mockImplementation ( ( key ) => {
787
+ console . log ( '*** mock pref get' , { key } ) ;
788
+ switch ( key ) {
789
+ case PreferenceKey . APP_CONFIRM_CLOSE :
790
+ return false ;
791
+ case PreferenceKey . APP_ZOOM_FACTOR :
792
+ return 0.5 ;
793
+ }
794
+ } ) ;
795
+
796
+ initializeMenu ( mockBrowserWindow ) ;
797
+
798
+ expect ( mockElectronSetApplicationMenu ) . toHaveBeenCalledTimes ( 1 ) ;
799
+
800
+ expect ( mockZoomFactorModule . setZoomFactor ) . toHaveBeenCalledWith (
801
+ mockBrowserWindow ,
802
+ 0.5
803
+ ) ;
754
804
755
805
expect (
756
- mockConfirmBeforeCloseModule . loadConfirmBeforeClosePreference
757
- ) . toHaveBeenCalledTimes ( 1 ) ;
806
+ mockConfirmBeforeCloseModule . setConfirmBeforeClose
807
+ ) . toHaveBeenCalledWith ( false ) ;
758
808
} ) ;
759
809
} ) ;
760
810
0 commit comments