Skip to content

Commit 1efdddb

Browse files
committed
wrapper function for vscode for testing
1 parent 7d38442 commit 1efdddb

File tree

5 files changed

+21
-20
lines changed

5 files changed

+21
-20
lines changed

src/common/window.apis.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import {
2727
TerminalShellExecutionStartEvent,
2828
TerminalShellIntegrationChangeEvent,
2929
TextEditor,
30+
TreeView,
31+
TreeViewOptions,
3032
Uri,
3133
window,
3234
WindowState,
@@ -377,3 +379,7 @@ export function onDidChangeWindowState(
377379
): Disposable {
378380
return window.onDidChangeWindowState(listener, thisArgs, disposables);
379381
}
382+
383+
export function createTreeView<T>(viewId: string, options: TreeViewOptions<T>): TreeView<T> {
384+
return window.createTreeView(viewId, options);
385+
}

src/features/envCommands.ts

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
11
import * as fs from 'fs-extra';
22
import * as path from 'path';
3-
import {
4-
commands,
5-
ProgressLocation,
6-
QuickInputButtons,
7-
TaskExecution,
8-
TaskRevealKind,
9-
Terminal,
10-
Uri,
11-
workspace,
12-
} from 'vscode';
3+
import { ProgressLocation, QuickInputButtons, TaskExecution, TaskRevealKind, Terminal, Uri, workspace } from 'vscode';
134
import {
145
CreateEnvironmentOptions,
156
PythonEnvironment,
@@ -28,6 +19,7 @@ import {
2819
} from '../internal.api';
2920
import { removePythonProjectSetting, setEnvironmentManager, setPackageManager } from './settings/settingHelpers';
3021

22+
import { executeCommand } from '../common/command.api';
3123
import { clipboardWriteText } from '../common/env.apis';
3224
import {} from '../common/errors/utils';
3325
import { Pickers } from '../common/localize';
@@ -470,7 +462,7 @@ export async function addPythonProjectCommand(
470462
'Open Folder',
471463
);
472464
if (r === 'Open Folder') {
473-
await commands.executeCommand('vscode.openFolder');
465+
await executeCommand('vscode.openFolder');
474466
return;
475467
}
476468
}
@@ -747,7 +739,7 @@ export async function copyPathToClipboard(item: unknown): Promise<void> {
747739
export async function revealProjectInExplorer(item: unknown): Promise<void> {
748740
if (item instanceof ProjectItem) {
749741
const projectUri = item.project.uri;
750-
await commands.executeCommand('revealInExplorer', projectUri);
742+
await executeCommand('revealInExplorer', projectUri);
751743
} else {
752744
traceVerbose(`Invalid context for reveal project in explorer: ${item}`);
753745
}
@@ -758,7 +750,7 @@ export async function revealProjectInExplorer(item: unknown): Promise<void> {
758750
*/
759751
export async function revealEnvInManagerView(item: unknown, managerView: EnvManagerView): Promise<void> {
760752
if (item instanceof ProjectEnvironment) {
761-
await commands.executeCommand('env-managers.focus');
753+
await executeCommand('env-managers.focus');
762754
await managerView.reveal(item.environment);
763755
return;
764756
}

src/features/views/envManagersView.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
import { Disposable, Event, EventEmitter, ProviderResult, TreeDataProvider, TreeItem, TreeView, window } from 'vscode';
1+
import { Disposable, Event, EventEmitter, ProviderResult, TreeDataProvider, TreeItem, TreeView } from 'vscode';
22
import { DidChangeEnvironmentEventArgs, EnvironmentGroupInfo, PythonEnvironment } from '../../api';
33
import { ProjectViews } from '../../common/localize';
44
import { createSimpleDebounce } from '../../common/utils/debounce';
5+
import { createTreeView } from '../../common/window.apis';
56
import {
67
DidChangeEnvironmentManagerEventArgs,
78
DidChangePackageManagerEventArgs,
@@ -42,7 +43,7 @@ export class EnvManagerView implements TreeDataProvider<EnvTreeItem>, Disposable
4243
public providers: EnvironmentManagers,
4344
private stateManager: ITemporaryStateManager,
4445
) {
45-
this.treeView = window.createTreeView<EnvTreeItem>('env-managers', {
46+
this.treeView = createTreeView<EnvTreeItem>('env-managers', {
4647
treeDataProvider: this,
4748
});
4849

src/test/features/envCommands.unit.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import * as assert from 'assert';
22
import * as sinon from 'sinon';
33
import * as typeMoq from 'typemoq';
4-
import { commands, Uri } from 'vscode';
4+
import { Uri } from 'vscode';
55
import { PythonEnvironment, PythonProject } from '../../api';
6+
import * as commandApi from '../../common/command.api';
67
import * as managerApi from '../../common/pickers/managers';
78
import * as projectApi from '../../common/pickers/projects';
89
import { createAnyEnvironmentCommand, revealEnvInManagerView } from '../../features/envCommands';
@@ -185,7 +186,7 @@ suite('Reveal Env In Manager View Command Tests', () => {
185186
setup(() => {
186187
managerView = typeMoq.Mock.ofType<EnvManagerView>();
187188
setupNonThenable(managerView);
188-
executeCommandStub = sinon.stub(commands, 'executeCommand');
189+
executeCommandStub = sinon.stub(commandApi, 'executeCommand');
189190
});
190191

191192
teardown(() => {

src/test/features/views/envManagersView.unit.test.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import * as sinon from 'sinon';
22
import * as typeMoq from 'typemoq';
3-
import { EventEmitter, TreeView, Uri, window } from 'vscode';
3+
import { EventEmitter, TreeView, Uri } from 'vscode';
44
import { PythonEnvironment } from '../../../api';
5+
import * as windowApis from '../../../common/window.apis';
56
import { EnvManagerView } from '../../../features/views/envManagersView';
67
import { ITemporaryStateManager } from '../../../features/views/temporaryStateManager';
78
import { EnvTreeItem } from '../../../features/views/treeViewItems';
@@ -65,7 +66,7 @@ suite('EnvManagerView.reveal Tests', () => {
6566
setupNonThenable(treeView);
6667

6768
// Stub window.createTreeView
68-
createTreeViewStub = sinon.stub(window, 'createTreeView').returns(treeView.object);
69+
createTreeViewStub = sinon.stub(windowApis, 'createTreeView').returns(treeView.object);
6970
});
7071

7172
teardown(() => {
@@ -203,7 +204,7 @@ suite('EnvManagerView.reveal Tests', () => {
203204

204205
// Re-stub createTreeView to return the updated mock
205206
createTreeViewStub.restore();
206-
createTreeViewStub = sinon.stub(window, 'createTreeView').returns(treeView.object);
207+
createTreeViewStub = sinon.stub(windowApis, 'createTreeView').returns(treeView.object);
207208

208209
const view = new EnvManagerView(envManagers.object, stateManager.object);
209210

0 commit comments

Comments
 (0)