Files
vscode-codeql/extensions/ql-vscode/test/__mocks__/appMock.ts
2023-01-03 10:31:38 +00:00

49 lines
1.3 KiB
TypeScript

import { App, AppMode } from "../../src/common/app";
import { AppEvent, AppEventEmitter } from "../../src/common/events";
import { Memento } from "../../src/common/memento";
import { Disposable } from "../../src/pure/disposable-object";
import { createMockLogger } from "./loggerMock";
import { createMockMemento } from "../mock-memento";
export function createMockApp({
extensionPath = "/mock/extension/path",
workspaceStoragePath = "/mock/workspace/storage/path",
globalStoragePath = "/mock/global/storage/path",
createEventEmitter = <T>() => new MockAppEventEmitter<T>(),
executeCommand = jest.fn(() => Promise.resolve()),
workspaceState = createMockMemento(),
}: {
extensionPath?: string;
workspaceStoragePath?: string;
globalStoragePath?: string;
createEventEmitter?: <T>() => AppEventEmitter<T>;
executeCommand?: () => Promise<void>;
workspaceState?: Memento;
}): App {
return {
mode: AppMode.Test,
logger: createMockLogger(),
subscriptions: [],
extensionPath,
workspaceStoragePath,
globalStoragePath,
workspaceState,
createEventEmitter,
executeCommand,
};
}
export class MockAppEventEmitter<T> implements AppEventEmitter<T> {
public event: AppEvent<T>;
constructor() {
this.event = () => {
return {} as Disposable;
};
}
public fire(): void {
// no-op
}
}