Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions src/extension/__mocks__/vscode.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
// Minimal VS Code mock for Jest testing
module.exports = {
EventEmitter: class {
constructor() {
this.event = jest.fn();
this._disposed = false;
}
fire(data) {
if (!this._disposed) {
this.event(data);
}
}
dispose() {
this._disposed = true;
}
},
TreeItem: class {
constructor(label, collapsibleState) {
this.label = label;
Expand Down Expand Up @@ -54,4 +68,8 @@ module.exports = {
Workspace: 2,
WorkspaceFolder: 3,
},
StatusBarAlignment: {
Left: 1,
Right: 2,
},
};
170 changes: 80 additions & 90 deletions src/extension/main.spec.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import * as vscode from "vscode";
import { registerCommands } from "./main";
import { EventBus } from "../internal/event-bus";
import { ButtonSetManager } from "../internal/managers/button-set-manager";
import { ConfigManager } from "../internal/managers/config-manager";
import { ImportExportManager } from "../internal/managers/import-export-manager";
import { StatusBarManager } from "../internal/managers/status-bar-manager";
import { TerminalManager } from "../internal/managers/terminal-manager";
import { CommandTreeProvider } from "../internal/providers/command-tree-provider";
import { ConfigWebviewProvider } from "../internal/providers/webview-provider";
import { createShowAllCommandsCommand } from "../internal/show-all-commands";

Expand Down Expand Up @@ -35,11 +34,10 @@ describe("main", () => {
let mockConfigReader: any;
let mockQuickPickCreator: any;
let mockTerminalManager: TerminalManager;
let mockStatusBarManager: StatusBarManager;
let mockTreeProvider: CommandTreeProvider;
let mockConfigManager: ConfigManager;
let mockImportExportManager: ImportExportManager;
let mockButtonSetManager: ButtonSetManager;
let mockEventBus: EventBus;

beforeEach(() => {
jest.clearAllMocks();
Expand All @@ -59,16 +57,8 @@ describe("main", () => {
executeCommand: jest.fn(),
} as any;

mockStatusBarManager = {
refreshButtons: jest.fn(),
} as any;

mockTreeProvider = {
refresh: jest.fn(),
} as any;

mockConfigManager = {
getCurrentConfigurationTarget: jest.fn(),
getCurrentConfigurationTarget: jest.fn().mockReturnValue("workspace"),
updateConfigurationTarget: jest.fn(),
} as any;

Expand All @@ -86,22 +76,28 @@ describe("main", () => {
validateUniqueName: jest.fn().mockReturnValue(true),
} as any;

mockEventBus = {
emit: jest.fn(),
on: jest.fn().mockReturnValue(() => {}),
off: jest.fn(),
dispose: jest.fn(),
} as any;

(vscode.commands.registerCommand as jest.Mock).mockReturnValue("mockDisposable");
});

describe("registerCommands", () => {
it("should register quickCommandButtons.execute command", () => {
const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(vscode.commands.registerCommand).toHaveBeenCalledWith(
"quickCommandButtons.execute",
Expand All @@ -111,17 +107,16 @@ describe("main", () => {
});

it("should register quickCommandButtons.executeFromTree command", () => {
const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(vscode.commands.registerCommand).toHaveBeenCalledWith(
"quickCommandButtons.executeFromTree",
Expand All @@ -131,17 +126,16 @@ describe("main", () => {
});

it("should register quickCommandButtons.refreshTree command", () => {
const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(vscode.commands.registerCommand).toHaveBeenCalledWith(
"quickCommandButtons.refreshTree",
Expand All @@ -151,17 +145,16 @@ describe("main", () => {
});

it("should register quickCommandButtons.refresh command", () => {
const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(vscode.commands.registerCommand).toHaveBeenCalledWith(
"quickCommandButtons.refresh",
Expand All @@ -174,17 +167,16 @@ describe("main", () => {
const mockShowAllCommand = jest.fn();
(createShowAllCommandsCommand as jest.Mock).mockReturnValue(mockShowAllCommand);

const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(vscode.commands.registerCommand).toHaveBeenCalledWith(
"quickCommandButtons.showAllCommands",
Expand All @@ -204,17 +196,16 @@ describe("main", () => {
const mockWebviewCommand = jest.fn();
(ConfigWebviewProvider.createWebviewCommand as jest.Mock).mockReturnValue(mockWebviewCommand);

const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(vscode.commands.registerCommand).toHaveBeenCalledWith(
"quickCommandButtons.openConfig",
Expand All @@ -231,17 +222,16 @@ describe("main", () => {
});

it("should return all registered command disposables", () => {
const commands = registerCommands(
mockContext,
mockConfigReader,
mockQuickPickCreator,
mockTerminalManager,
mockStatusBarManager,
mockTreeProvider,
mockConfigManager,
mockImportExportManager,
mockButtonSetManager
);
const commands = registerCommands({
buttonSetManager: mockButtonSetManager,
configManager: mockConfigManager,
configReader: mockConfigReader,
context: mockContext,
eventBus: mockEventBus,
importExportManager: mockImportExportManager,
quickPickCreator: mockQuickPickCreator,
terminalManager: mockTerminalManager,
});

expect(commands).toEqual({
deleteButtonSetCommand: "mockDisposable",
Expand Down
Loading
Loading