1+ import { ConfigService } from '@nestjs/config' ;
12import { Test , TestingModule } from '@nestjs/testing' ;
23
34import type { Systeminformation } from 'systeminformation' ;
@@ -6,7 +7,6 @@ import { blockDevices, diskLayout } from 'systeminformation';
67// Vitest imports
78import { beforeEach , describe , expect , it , vi } from 'vitest' ;
89
9- import { store } from '@app/store/index.js' ;
1010import {
1111 ArrayDisk ,
1212 ArrayDiskStatus ,
@@ -30,11 +30,6 @@ vi.mock('@app/utils.js', () => ({
3030 return { data, errors : [ ] } ;
3131 } ) ,
3232} ) ) ;
33- vi . mock ( '@app/store/index.js' , ( ) => ( {
34- store : {
35- getState : vi . fn ( ) ,
36- } ,
37- } ) ) ;
3833
3934// Remove explicit type assertions for mocks
4035const mockExeca = execa as any ; // Using 'any' for simplicity with complex mock setups
@@ -44,6 +39,7 @@ const mockBatchProcess = batchProcess as any;
4439
4540describe ( 'DisksService' , ( ) => {
4641 let service : DisksService ;
42+ let configService : ConfigService ;
4743
4844 // Mock ArrayDisk data from state
4945 const mockArrayDisks : ArrayDisk [ ] = [
@@ -305,21 +301,28 @@ describe('DisksService', () => {
305301 // Reset mocks before each test using vi
306302 vi . clearAllMocks ( ) ;
307303
308- // Setup default store state
309- vi . mocked ( store . getState ) . mockReturnValue ( {
310- paths : {
311- states : 'dev/states' ,
312- } ,
313- emhttp : {
314- disks : mockArrayDisks ,
315- } ,
316- } as any ) ;
304+ // Create mock ConfigService
305+ const mockConfigService = {
306+ get : vi . fn ( ) . mockImplementation ( ( key : string , defaultValue ?: any ) => {
307+ if ( key === 'store.emhttp.disks' ) {
308+ return mockArrayDisks ;
309+ }
310+ return defaultValue ;
311+ } ) ,
312+ } ;
317313
318314 const module : TestingModule = await Test . createTestingModule ( {
319- providers : [ DisksService ] ,
315+ providers : [
316+ DisksService ,
317+ {
318+ provide : ConfigService ,
319+ useValue : mockConfigService ,
320+ } ,
321+ ] ,
320322 } ) . compile ( ) ;
321323
322324 service = module . get < DisksService > ( DisksService ) ;
325+ configService = module . get < ConfigService > ( ConfigService ) ;
323326
324327 // Setup default mock implementations
325328 mockDiskLayout . mockResolvedValue ( mockDiskLayoutData ) ;
@@ -347,7 +350,7 @@ describe('DisksService', () => {
347350
348351 expect ( mockDiskLayout ) . toHaveBeenCalledTimes ( 1 ) ;
349352 expect ( mockBlockDevices ) . toHaveBeenCalledTimes ( 1 ) ;
350- expect ( store . getState ) . toHaveBeenCalledTimes ( 1 ) ;
353+ expect ( configService . get ) . toHaveBeenCalledWith ( 'store.emhttp.disks' , [ ] ) ;
351354 expect ( mockBatchProcess ) . toHaveBeenCalledTimes ( 1 ) ;
352355
353356 expect ( disks ) . toHaveLength ( mockDiskLayoutData . length ) ;
@@ -380,14 +383,12 @@ describe('DisksService', () => {
380383 } ) ;
381384
382385 it ( 'should handle empty state gracefully' , async ( ) => {
383- vi . mocked ( store . getState ) . mockReturnValue ( {
384- paths : {
385- states : 'dev/states' ,
386- } ,
387- emhttp : {
388- disks : [ ] ,
389- } ,
390- } as any ) ;
386+ vi . mocked ( configService . get ) . mockImplementation ( ( key : string , defaultValue ?: any ) => {
387+ if ( key === 'store.emhttp.disks' ) {
388+ return [ ] ;
389+ }
390+ return defaultValue ;
391+ } ) ;
391392
392393 const disks = await service . getDisks ( ) ;
393394
@@ -406,14 +407,12 @@ describe('DisksService', () => {
406407 id : ' S4ENNF0N123456 ' , // spaces around ID
407408 } ;
408409
409- vi . mocked ( store . getState ) . mockReturnValue ( {
410- paths : {
411- states : 'dev/states' ,
412- } ,
413- emhttp : {
414- disks : disksWithSpaces ,
415- } ,
416- } as any ) ;
410+ vi . mocked ( configService . get ) . mockImplementation ( ( key : string , defaultValue ?: any ) => {
411+ if ( key === 'store.emhttp.disks' ) {
412+ return disksWithSpaces ;
413+ }
414+ return defaultValue ;
415+ } ) ;
417416
418417 const disks = await service . getDisks ( ) ;
419418 const disk = disks . find ( ( d ) => d . id === 'S4ENNF0N123456' ) ;
@@ -447,14 +446,11 @@ describe('DisksService', () => {
447446 } ) ;
448447 } ) ;
449448
450- it ( 'should use state data instead of reloading config file' , async ( ) => {
451- const getStateSpy = vi . spyOn ( store , 'getState' ) ;
452-
449+ it ( 'should use ConfigService to get state data' , async ( ) => {
453450 await service . getDisks ( ) ;
454451
455- expect ( getStateSpy ) . toHaveBeenCalled ( ) ;
456- // Verify we're accessing the state exactly once
457- expect ( store . getState ) . toHaveBeenCalledTimes ( 1 ) ;
452+ // Verify we're accessing the state through ConfigService
453+ expect ( configService . get ) . toHaveBeenCalledWith ( 'store.emhttp.disks' , [ ] ) ;
458454 } ) ;
459455
460456 it ( 'should handle empty disk layout or block devices' , async ( ) => {
0 commit comments