@@ -15,12 +15,20 @@ import * as sinonChai from 'sinon-chai';
1515import * as sinon from 'sinon' ;
1616import { activate } from '../src/extension' ;
1717import { Cluster } from '../src/openshift/cluster' ;
18+ import { Application } from '../src/openshift/application' ;
19+ import { Catalog } from '../src/openshift/catalog' ;
20+ import { Component } from '../src/openshift/component' ;
21+ import { Project } from '../src/openshift/project' ;
22+ import { Service } from '../src/openshift/service' ;
23+ import { Storage } from '../src/openshift/storage' ;
24+ import { Url } from '../src/openshift/url' ;
1825import packagejson = require( '../package.json' ) ;
26+ import { isContext } from 'vm' ;
1927
2028const expect = chai . expect ;
2129chai . use ( sinonChai ) ;
2230
23- suite ( 'openshift connector Extension' , ( ) => {
31+ suite ( 'openshift connector Extension' , async ( ) => {
2432
2533 let sandbox : sinon . SinonSandbox ;
2634
@@ -57,10 +65,36 @@ suite('openshift connector Extension', () => {
5765 assert . ok ( vscode . extensions . getExtension ( 'redhat.vscode-openshift-connector' ) ) ;
5866 } ) ;
5967
68+ async function getStaticMethosToStub ( osc : string [ ] ) : Promise < string [ ] > {
69+ let mths : Set < string > = new Set ( ) ;
70+ osc . forEach ( name => {
71+ name . replace ( '.palette' , '' ) ;
72+ let segs : string [ ] = name . split ( '.' ) ;
73+ let methName : string = segs [ segs . length - 1 ] ;
74+ methName = methName === 'delete' ? 'del' : methName ;
75+ ! mths . has ( methName ) && mths . add ( methName ) ;
76+
77+ } ) ;
78+ return Array . from ( mths ) ;
79+ }
80+
6081 test ( 'should activate extension' , async ( ) => {
6182 const registerTreeDataProviderStub = sandbox . stub ( vscode . window , 'registerTreeDataProvider' ) ;
83+ sandbox . stub ( vscode . window , 'showErrorMessage' ) ;
6284 await activate ( context ) ;
85+ let cmds :string [ ] = await vscode . commands . getCommands ( ) ;
86+ let osc :string [ ] = cmds . filter ( ( item ) => item . includes ( 'openshift.' ) ) ;
6387 expect ( registerTreeDataProviderStub ) . calledOnce ;
88+ const mths : string [ ] = await getStaticMethosToStub ( osc ) ;
89+ ( < any > [ Application , Catalog , Cluster , Component , Project , Service , Storage , Url ] ) . forEach ( async ( item ) => {
90+ mths . forEach ( ( name ) => {
91+ if ( item [ name ] ) {
92+ sandbox . stub ( item , name ) ;
93+ }
94+ } ) ;
95+ } )
96+ osc . forEach ( ( item ) => vscode . commands . executeCommand ( item ) ) ;
97+ expect ( vscode . window . showErrorMessage ) . has . not . been . called ;
6498 } ) ;
6599
66100 test ( 'should register all server commands' , async ( ) => {
@@ -71,7 +105,7 @@ suite('openshift connector Extension', () => {
71105 serverCommands . push ( value . command ) ;
72106 } ) ;
73107 const foundServerCommands = commands . filter ( ( value ) => {
74- return serverCommands . indexOf ( value ) >= 0 || value . startsWith ( 'openshift.' ) ;
108+ return serverCommands . indexOf ( value ) >= 0 ;
75109 } ) ;
76110 assert . equal ( foundServerCommands . length , serverCommands . length , 'Some openshift commands are not registered properly or a new command is not added to the test' ) ;
77111 } ) ;
@@ -107,6 +141,13 @@ suite('openshift connector Extension', () => {
107141 const simStub : sinon . SinonStub = sandbox . stub ( vscode . window , 'showInformationMessage' ) ;
108142 await vscode . commands . executeCommand ( 'openshift.about' ) ;
109143 expect ( simStub ) . not . called ;
110- } )
144+ } ) ;
111145
146+ test ( 'sync command wrapper shows message returned from command' , async ( ) => {
147+ const error = new Error ( 'Message' ) ;
148+ sandbox . stub ( Cluster , 'refresh' ) . throws ( error ) ;
149+ const semStub : sinon . SinonStub = sandbox . stub ( vscode . window , 'showErrorMessage' ) ;
150+ await vscode . commands . executeCommand ( 'openshift.explorer.refresh' ) ;
151+ expect ( semStub ) . calledWith ( error ) ;
152+ } ) ;
112153} ) ;
0 commit comments