Skip to content

Commit 4f37e63

Browse files
authored
Make use of show experiments command for setup page (#3910)
1 parent 3464a90 commit 4f37e63

File tree

4 files changed

+20
-18
lines changed

4 files changed

+20
-18
lines changed

extension/src/setup/index.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { join } from 'path'
2-
import { Event, EventEmitter, ViewColumn, workspace } from 'vscode'
2+
import { Event, EventEmitter, workspace } from 'vscode'
33
import { Disposable, Disposer } from '@hediet/std/disposable'
44
import isEmpty from 'lodash.isempty'
55
import {
@@ -75,7 +75,6 @@ export class Setup
7575
private readonly internalCommands: InternalCommands
7676

7777
private readonly webviewMessages: WebviewMessages
78-
private readonly showExperiments: () => void
7978
private readonly getHasData: () => boolean | undefined
8079
private readonly collectWorkspaceScale: () => Promise<WorkspaceScale>
8180

@@ -130,10 +129,6 @@ export class Setup
130129
void this.sendDataToWebview()
131130
}
132131

133-
this.showExperiments = () => {
134-
void experiments.showWebview(this.dvcRoots[0], ViewColumn.Active)
135-
}
136-
137132
this.getHasData = () => experiments.getHasData()
138133
const onDidChangeHasData = experiments.columnsChanged.event
139134
this.dispose.track(
@@ -421,8 +416,7 @@ export class Setup
421416
private createWebviewMessageHandler() {
422417
const webviewMessages = new WebviewMessages(
423418
() => this.getWebview(),
424-
() => this.initializeGit(),
425-
() => this.showExperiments()
419+
() => this.initializeGit()
426420
)
427421
this.dispose.track(
428422
this.onDidReceivedWebviewMessage(message =>

extension/src/setup/webview/messages.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,13 @@ import { openUrl } from '../../vscode/external'
2020
export class WebviewMessages {
2121
private readonly getWebview: () => BaseWebview<TSetupData> | undefined
2222
private readonly initializeGit: () => void
23-
private readonly showExperiments: () => void
2423

2524
constructor(
2625
getWebview: () => BaseWebview<TSetupData> | undefined,
27-
initializeGit: () => void,
28-
showExperiments: () => void
26+
initializeGit: () => void
2927
) {
3028
this.getWebview = getWebview
3129
this.initializeGit = initializeGit
32-
this.showExperiments = showExperiments
3330
}
3431

3532
public sendWebviewMessage({
@@ -100,7 +97,7 @@ export class WebviewMessages {
10097
message.payload
10198
)
10299
case MessageFromWebviewType.OPEN_EXPERIMENTS_WEBVIEW:
103-
return this.showExperiments()
100+
return commands.executeCommand(RegisteredCommands.EXPERIMENT_SHOW)
104101

105102
default:
106103
Logger.error(`Unexpected message: ${JSON.stringify(message)}`)

extension/src/test/suite/setup/index.test.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -793,19 +793,30 @@ suite('Setup Test Suite', () => {
793793
}).timeout(WEBVIEW_TEST_TIMEOUT)
794794

795795
it('should handle a message to open the experiments webview', async () => {
796-
const { messageSpy, setup, mockOpenExperiments } = buildSetup(disposable)
796+
const { messageSpy, setup, mockShowWebview, mockExecuteCommand } =
797+
buildSetup(disposable)
797798

798799
const webview = await setup.showWebview()
799800
await webview.isReady()
801+
mockExecuteCommand.restore()
800802

801803
const mockMessageReceived = getMessageReceivedEmitter(webview)
802804

805+
const showWebviewCalled = new Promise(resolve =>
806+
mockShowWebview.callsFake(() => {
807+
resolve(undefined)
808+
return Promise.resolve(undefined)
809+
})
810+
)
811+
stub(Setup.prototype, 'shouldBeShown').returns(false)
812+
803813
messageSpy.resetHistory()
804814
mockMessageReceived.fire({
805815
type: MessageFromWebviewType.OPEN_EXPERIMENTS_WEBVIEW
806816
})
807817

808-
expect(mockOpenExperiments).to.be.calledOnce
818+
await showWebviewCalled
819+
expect(mockShowWebview).to.be.calledOnce
809820
}).timeout(WEBVIEW_TEST_TIMEOUT)
810821

811822
it('should send the appropriate messages to the webview to focus different sections', async () => {

extension/src/test/suite/setup/util.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ export const buildSetup = (
6363
const mockAutoInstallDvc = stub(AutoInstall, 'autoInstallDvc')
6464
stub(AutoInstall, 'findPythonBinForInstall').resolves(undefined)
6565

66-
const mockOpenExperiments = fake()
66+
const mockShowWebview = stub(WorkspaceExperiments.prototype, 'showWebview')
6767

6868
const mockRunSetup = stub(Runner, 'run').resolves(undefined)
6969

@@ -88,7 +88,7 @@ export const buildSetup = (
8888
{
8989
columnsChanged: mockEmitter,
9090
getHasData: () => hasData,
91-
showWebview: mockOpenExperiments
91+
showWebview: mockShowWebview
9292
} as unknown as WorkspaceExperiments,
9393
{ setAvailability: stub() } as unknown as Status,
9494
resourceLocator.dvcIcon,
@@ -108,9 +108,9 @@ export const buildSetup = (
108108
mockGetGitRepositoryRoot,
109109
mockGlobalVersion,
110110
mockInitializeGit,
111-
mockOpenExperiments,
112111
mockOpenExternal,
113112
mockRunSetup,
113+
mockShowWebview,
114114
mockVersion,
115115
resourceLocator,
116116
setup,

0 commit comments

Comments
 (0)