@@ -24,6 +24,7 @@ import { vol } from 'memfs';
2424
2525import { ContextsManager } from '/@/manager/contexts-manager' ;
2626import { ContextsStatesDispatcher } from '/@/manager/contexts-states-dispatcher' ;
27+ import { type ApiSubscriber } from '/@/subscriber/api-subscriber' ;
2728
2829let extensionContextMock : ExtensionContext ;
2930let dashboardExtension : DashboardExtension ;
@@ -35,11 +36,15 @@ vi.mock(import('node:fs/promises'));
3536vi . mock ( import ( '@kubernetes/client-node' ) ) ;
3637vi . mock ( import ( './manager/contexts-manager' ) ) ;
3738vi . mock ( import ( './manager/contexts-states-dispatcher' ) ) ;
39+ vi . mock ( import ( './subscriber/api-subscriber' ) ) ;
3840
3941beforeEach ( ( ) => {
4042 vi . restoreAllMocks ( ) ;
4143 vi . resetAllMocks ( ) ;
4244 vol . reset ( ) ;
45+ vol . fromJSON ( {
46+ '/path/to/extension/index.html' : '<html></html>' ,
47+ } ) ;
4348
4449 vi . mocked ( window . createWebviewPanel ) . mockReturnValue ( {
4550 webview : {
@@ -63,6 +68,7 @@ beforeEach(() => {
6368
6469 contextsStatesDispatcherMock = {
6570 init : vi . fn ( ) ,
71+ addSubscriber : vi . fn ( ) ,
6672 } as unknown as ContextsStatesDispatcher ;
6773 vi . mocked ( ContextsStatesDispatcher ) . mockReturnValue ( contextsStatesDispatcherMock ) ;
6874
@@ -73,12 +79,6 @@ beforeEach(() => {
7379} ) ;
7480
7581describe ( 'a kubeconfig file is not present' , ( ) => {
76- beforeEach ( ( ) => {
77- vol . fromJSON ( {
78- '/path/to/extension/index.html' : '<html></html>' ,
79- } ) ;
80- } ) ;
81-
8282 test ( 'should activate correctly and calls contextsManager every time the kubeconfig file changes' , async ( ) => {
8383 await dashboardExtension . activate ( ) ;
8484 expect ( contextsManagerMock . update ) . not . toHaveBeenCalled ( ) ;
@@ -126,3 +126,18 @@ describe('a kubeconfig file is present', () => {
126126 expect ( p ) . toBeUndefined ( ) ;
127127 } ) ;
128128} ) ;
129+
130+ test ( 'activate should return a KubernetesDashboardExtensionApi' , async ( ) => {
131+ const api = await dashboardExtension . activate ( ) ;
132+ expect ( api ) . toBeDefined ( ) ;
133+ expect ( api . getSubscriber ) . toBeDefined ( ) ;
134+
135+ const subscriber = api . getSubscriber ( ) ;
136+ expect ( subscriber ) . toBeDefined ( ) ;
137+ expect ( contextsStatesDispatcherMock . addSubscriber ) . toHaveBeenCalled ( ) ;
138+ const apiSubscriber = vi . mocked ( contextsStatesDispatcherMock . addSubscriber ) . mock . lastCall ?. [ 0 ] ;
139+
140+ subscriber . dispose ( ) ;
141+ expect ( apiSubscriber ) . toBeDefined ( ) ;
142+ expect ( ( apiSubscriber as ApiSubscriber ) . dispose ) . toHaveBeenCalledOnce ( ) ;
143+ } ) ;
0 commit comments