@@ -39,14 +39,28 @@ vi.mock('@app/store/index.js', () => ({
3939    } , 
4040} ) ) ; 
4141
42+ // Mock pubsub 
43+ vi . mock ( '@app/core/pubsub.js' ,  ( )  =>  ( { 
44+     pubsub : { 
45+         publish : vi . fn ( ) . mockResolvedValue ( undefined ) , 
46+     } , 
47+     PUBSUB_CHANNEL : { 
48+         INFO : 'info' , 
49+     } , 
50+ } ) ) ; 
51+ 
4252// Mock DockerService 
4353vi . mock ( './docker.service.js' ,  ( )  =>  ( { 
4454    DockerService : vi . fn ( ) . mockImplementation ( ( )  =>  ( { 
4555        getDockerClient : vi . fn ( ) , 
46-         debouncedContainerCacheUpdate : vi . fn ( ) , 
56+         clearContainerCache : vi . fn ( ) , 
57+         getAppInfo : vi . fn ( ) . mockResolvedValue ( {  info : {  apps : {  installed : 1 ,  running : 1  }  }  } ) , 
4758    } ) ) , 
4859} ) ) ; 
4960
61+ // Import pubsub for use in tests 
62+ import  {  pubsub ,  PUBSUB_CHANNEL  }  from  '@app/core/pubsub.js' ; 
63+ 
5064describe ( 'DockerEventService' ,  ( )  =>  { 
5165    let  service : DockerEventService ; 
5266    let  dockerService : DockerService ; 
@@ -64,7 +78,8 @@ describe('DockerEventService', () => {
6478        // Create a mock Docker service *instance* 
6579        const  mockDockerServiceImpl  =  { 
6680            getDockerClient : vi . fn ( ) . mockReturnValue ( mockDockerClient ) , 
67-             debouncedContainerCacheUpdate : vi . fn ( ) , 
81+             clearContainerCache : vi . fn ( ) , 
82+             getAppInfo : vi . fn ( ) . mockResolvedValue ( {  info : {  apps : {  installed : 1 ,  running : 1  }  }  } ) , 
6883        } ; 
6984
7085        // Create a mock event stream 
@@ -124,7 +139,9 @@ describe('DockerEventService', () => {
124139
125140        await  waitForEventProcessing ( ) ; 
126141
127-         expect ( dockerService . debouncedContainerCacheUpdate ) . toHaveBeenCalled ( ) ; 
142+         expect ( dockerService . clearContainerCache ) . toHaveBeenCalled ( ) ; 
143+         expect ( dockerService . getAppInfo ) . toHaveBeenCalled ( ) ; 
144+         expect ( pubsub . publish ) . toHaveBeenCalledWith ( PUBSUB_CHANNEL . INFO ,  expect . any ( Object ) ) ; 
128145    } ) ; 
129146
130147    it ( 'should ignore non-watched actions' ,  async  ( )  =>  { 
@@ -144,7 +161,9 @@ describe('DockerEventService', () => {
144161
145162        await  waitForEventProcessing ( ) ; 
146163
147-         expect ( dockerService . debouncedContainerCacheUpdate ) . not . toHaveBeenCalled ( ) ; 
164+         expect ( dockerService . clearContainerCache ) . not . toHaveBeenCalled ( ) ; 
165+         expect ( dockerService . getAppInfo ) . not . toHaveBeenCalled ( ) ; 
166+         expect ( pubsub . publish ) . not . toHaveBeenCalled ( ) ; 
148167    } ) ; 
149168
150169    it ( 'should handle malformed JSON gracefully' ,  async  ( )  =>  { 
@@ -160,7 +179,9 @@ describe('DockerEventService', () => {
160179        await  waitForEventProcessing ( ) ; 
161180
162181        expect ( service . isActive ( ) ) . toBe ( true ) ; 
163-         expect ( dockerService . debouncedContainerCacheUpdate ) . toHaveBeenCalledTimes ( 1 ) ; 
182+         expect ( dockerService . clearContainerCache ) . toHaveBeenCalledTimes ( 1 ) ; 
183+         expect ( dockerService . getAppInfo ) . toHaveBeenCalledTimes ( 1 ) ; 
184+         expect ( pubsub . publish ) . toHaveBeenCalledTimes ( 1 ) ; 
164185    } ) ; 
165186
166187    it ( 'should handle multiple JSON bodies in a single chunk' ,  async  ( )  =>  { 
@@ -176,7 +197,9 @@ describe('DockerEventService', () => {
176197
177198        await  waitForEventProcessing ( ) ; 
178199
179-         expect ( dockerService . debouncedContainerCacheUpdate ) . toHaveBeenCalledTimes ( 2 ) ; 
200+         expect ( dockerService . clearContainerCache ) . toHaveBeenCalledTimes ( 2 ) ; 
201+         expect ( dockerService . getAppInfo ) . toHaveBeenCalledTimes ( 2 ) ; 
202+         expect ( pubsub . publish ) . toHaveBeenCalledTimes ( 2 ) ; 
180203    } ) ; 
181204
182205    it ( 'should handle mixed valid and invalid JSON in a single chunk' ,  async  ( )  =>  { 
@@ -190,7 +213,9 @@ describe('DockerEventService', () => {
190213
191214        await  waitForEventProcessing ( ) ; 
192215
193-         expect ( dockerService . debouncedContainerCacheUpdate ) . toHaveBeenCalledTimes ( 1 ) ; 
216+         expect ( dockerService . clearContainerCache ) . toHaveBeenCalledTimes ( 1 ) ; 
217+         expect ( dockerService . getAppInfo ) . toHaveBeenCalledTimes ( 1 ) ; 
218+         expect ( pubsub . publish ) . toHaveBeenCalledTimes ( 1 ) ; 
194219
195220        expect ( service . isActive ( ) ) . toBe ( true ) ; 
196221    } ) ; 
@@ -205,7 +230,9 @@ describe('DockerEventService', () => {
205230
206231        await  waitForEventProcessing ( ) ; 
207232
208-         expect ( dockerService . debouncedContainerCacheUpdate ) . toHaveBeenCalledTimes ( 1 ) ; 
233+         expect ( dockerService . clearContainerCache ) . toHaveBeenCalledTimes ( 1 ) ; 
234+         expect ( dockerService . getAppInfo ) . toHaveBeenCalledTimes ( 1 ) ; 
235+         expect ( pubsub . publish ) . toHaveBeenCalledTimes ( 1 ) ; 
209236
210237        expect ( service . isActive ( ) ) . toBe ( true ) ; 
211238    } ) ; 
0 commit comments