Path: blob/main/src/vs/platform/dialogs/test/common/testDialogService.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { Event } from '../../../../base/common/event.js';6import Severity from '../../../../base/common/severity.js';7import { IConfirmation, IConfirmationResult, IDialogService, IInputResult, IPrompt, IPromptBaseButton, IPromptResult, IPromptResultWithCancel, IPromptWithCustomCancel, IPromptWithDefaultCancel } from '../../common/dialogs.js';89export class TestDialogService implements IDialogService {1011declare readonly _serviceBrand: undefined;1213readonly onWillShowDialog = Event.None;14readonly onDidShowDialog = Event.None;1516constructor(17private defaultConfirmResult: IConfirmationResult | undefined = undefined,18private defaultPromptResult: IPromptResult<any> | undefined = undefined19) { }2021private confirmResult: IConfirmationResult | undefined = undefined;22setConfirmResult(result: IConfirmationResult) {23this.confirmResult = result;24}2526async confirm(confirmation: IConfirmation): Promise<IConfirmationResult> {27if (this.confirmResult) {28const confirmResult = this.confirmResult;29this.confirmResult = undefined;3031return confirmResult;32}3334return this.defaultConfirmResult ?? { confirmed: false };35}3637prompt<T>(prompt: IPromptWithCustomCancel<T>): Promise<IPromptResultWithCancel<T>>;38prompt<T>(prompt: IPromptWithDefaultCancel<T>): Promise<IPromptResult<T>>;39prompt<T>(prompt: IPrompt<T>): Promise<IPromptResult<T>>;40async prompt<T>(prompt: IPrompt<T> | IPromptWithCustomCancel<T>): Promise<IPromptResult<T> | IPromptResultWithCancel<T>> {41if (this.defaultPromptResult) {42return this.defaultPromptResult;43}44const promptButtons: IPromptBaseButton<T>[] = [...(prompt.buttons ?? [])];45if (prompt.cancelButton && typeof prompt.cancelButton !== 'string' && typeof prompt.cancelButton !== 'boolean') {46promptButtons.push(prompt.cancelButton);47}4849return { result: await promptButtons[0]?.run({ checkboxChecked: false }) };50}51async info(message: string, detail?: string): Promise<void> {52await this.prompt({ type: Severity.Info, message, detail });53}5455async warn(message: string, detail?: string): Promise<void> {56await this.prompt({ type: Severity.Warning, message, detail });57}5859async error(message: string, detail?: string): Promise<void> {60await this.prompt({ type: Severity.Error, message, detail });61}62async input(): Promise<IInputResult> { { return { confirmed: true, values: [] }; } }63async about(): Promise<void> { }64}656667