mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-10-14 04:08:28 +00:00
305 lines
8.3 KiB
TypeScript
305 lines
8.3 KiB
TypeScript
import { WindowAPI } from "../api/WindowAPI.js"
|
|
import { Uri } from "../classes/Uri.js"
|
|
import { StatusBarAlignment } from "../types.js"
|
|
|
|
describe("WindowAPI", () => {
|
|
let windowAPI: WindowAPI
|
|
|
|
beforeEach(() => {
|
|
windowAPI = new WindowAPI()
|
|
})
|
|
|
|
describe("tabGroups property", () => {
|
|
it("should have tabGroups", () => {
|
|
expect(windowAPI.tabGroups).toBeDefined()
|
|
})
|
|
|
|
it("should return TabGroupsAPI instance", () => {
|
|
expect(typeof windowAPI.tabGroups.onDidChangeTabs).toBe("function")
|
|
expect(Array.isArray(windowAPI.tabGroups.all)).toBe(true)
|
|
})
|
|
})
|
|
|
|
describe("visibleTextEditors property", () => {
|
|
it("should be an empty array initially", () => {
|
|
expect(windowAPI.visibleTextEditors).toEqual([])
|
|
})
|
|
})
|
|
|
|
describe("createOutputChannel()", () => {
|
|
it("should create an output channel with the given name", () => {
|
|
const channel = windowAPI.createOutputChannel("TestChannel")
|
|
|
|
expect(channel.name).toBe("TestChannel")
|
|
})
|
|
|
|
it("should return an OutputChannel instance", () => {
|
|
const channel = windowAPI.createOutputChannel("Test")
|
|
|
|
expect(typeof channel.append).toBe("function")
|
|
expect(typeof channel.appendLine).toBe("function")
|
|
expect(typeof channel.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("createStatusBarItem()", () => {
|
|
it("should create with default alignment", () => {
|
|
const item = windowAPI.createStatusBarItem()
|
|
|
|
expect(item.alignment).toBe(StatusBarAlignment.Left)
|
|
})
|
|
|
|
it("should create with specified alignment", () => {
|
|
const item = windowAPI.createStatusBarItem(StatusBarAlignment.Right)
|
|
|
|
expect(item.alignment).toBe(StatusBarAlignment.Right)
|
|
})
|
|
|
|
it("should create with alignment and priority", () => {
|
|
const item = windowAPI.createStatusBarItem(StatusBarAlignment.Left, 100)
|
|
|
|
expect(item.alignment).toBe(StatusBarAlignment.Left)
|
|
expect(item.priority).toBe(100)
|
|
})
|
|
|
|
it("should handle overloaded signature with id", () => {
|
|
const item = windowAPI.createStatusBarItem("myId", StatusBarAlignment.Right, 50)
|
|
|
|
expect(item.alignment).toBe(StatusBarAlignment.Right)
|
|
expect(item.priority).toBe(50)
|
|
})
|
|
})
|
|
|
|
describe("createTextEditorDecorationType()", () => {
|
|
it("should create a decoration type", () => {
|
|
const decoration = windowAPI.createTextEditorDecorationType({})
|
|
|
|
expect(decoration).toBeDefined()
|
|
expect(decoration.key).toContain("decoration-")
|
|
})
|
|
|
|
it("should return unique keys", () => {
|
|
const decoration1 = windowAPI.createTextEditorDecorationType({})
|
|
const decoration2 = windowAPI.createTextEditorDecorationType({})
|
|
|
|
expect(decoration1.key).not.toBe(decoration2.key)
|
|
})
|
|
})
|
|
|
|
describe("createTerminal()", () => {
|
|
it("should create a terminal with default name", () => {
|
|
const terminal = windowAPI.createTerminal()
|
|
|
|
expect(terminal.name).toBe("Terminal")
|
|
})
|
|
|
|
it("should create a terminal with specified name", () => {
|
|
const terminal = windowAPI.createTerminal({ name: "MyTerminal" })
|
|
|
|
expect(terminal.name).toBe("MyTerminal")
|
|
})
|
|
|
|
it("should return terminal with expected methods", () => {
|
|
const terminal = windowAPI.createTerminal()
|
|
|
|
expect(typeof terminal.sendText).toBe("function")
|
|
expect(typeof terminal.show).toBe("function")
|
|
expect(typeof terminal.hide).toBe("function")
|
|
expect(typeof terminal.dispose).toBe("function")
|
|
})
|
|
|
|
it("should have processId promise", async () => {
|
|
const terminal = windowAPI.createTerminal()
|
|
|
|
const processId = await terminal.processId
|
|
|
|
expect(processId).toBeUndefined()
|
|
})
|
|
})
|
|
|
|
describe("showInformationMessage()", () => {
|
|
it("should return a promise", () => {
|
|
const result = windowAPI.showInformationMessage("Test message")
|
|
|
|
expect(result).toBeInstanceOf(Promise)
|
|
})
|
|
|
|
it("should resolve to undefined", async () => {
|
|
const result = await windowAPI.showInformationMessage("Test message")
|
|
|
|
expect(result).toBeUndefined()
|
|
})
|
|
})
|
|
|
|
describe("showWarningMessage()", () => {
|
|
it("should return a promise", () => {
|
|
const result = windowAPI.showWarningMessage("Warning message")
|
|
|
|
expect(result).toBeInstanceOf(Promise)
|
|
})
|
|
|
|
it("should resolve to undefined", async () => {
|
|
const result = await windowAPI.showWarningMessage("Warning message")
|
|
|
|
expect(result).toBeUndefined()
|
|
})
|
|
})
|
|
|
|
describe("showErrorMessage()", () => {
|
|
it("should return a promise", () => {
|
|
const result = windowAPI.showErrorMessage("Error message")
|
|
|
|
expect(result).toBeInstanceOf(Promise)
|
|
})
|
|
|
|
it("should resolve to undefined", async () => {
|
|
const result = await windowAPI.showErrorMessage("Error message")
|
|
|
|
expect(result).toBeUndefined()
|
|
})
|
|
})
|
|
|
|
describe("showQuickPick()", () => {
|
|
it("should return first item", async () => {
|
|
const result = await windowAPI.showQuickPick(["item1", "item2", "item3"])
|
|
|
|
expect(result).toBe("item1")
|
|
})
|
|
|
|
it("should return undefined for empty array", async () => {
|
|
const result = await windowAPI.showQuickPick([])
|
|
|
|
expect(result).toBeUndefined()
|
|
})
|
|
})
|
|
|
|
describe("showInputBox()", () => {
|
|
it("should return empty string", async () => {
|
|
const result = await windowAPI.showInputBox()
|
|
|
|
expect(result).toBe("")
|
|
})
|
|
})
|
|
|
|
describe("showOpenDialog()", () => {
|
|
it("should return empty array", async () => {
|
|
const result = await windowAPI.showOpenDialog()
|
|
|
|
expect(result).toEqual([])
|
|
})
|
|
})
|
|
|
|
describe("showTextDocument()", () => {
|
|
it("should return an editor", async () => {
|
|
const uri = Uri.file("/test/file.txt")
|
|
const editor = await windowAPI.showTextDocument(uri)
|
|
|
|
expect(editor).toBeDefined()
|
|
expect(editor.document).toBeDefined()
|
|
})
|
|
|
|
it("should add editor to visibleTextEditors", async () => {
|
|
const uri = Uri.file("/test/file.txt")
|
|
await windowAPI.showTextDocument(uri)
|
|
|
|
expect(windowAPI.visibleTextEditors.length).toBeGreaterThan(0)
|
|
})
|
|
})
|
|
|
|
describe("registerWebviewViewProvider()", () => {
|
|
it("should return a disposable", () => {
|
|
const mockProvider = {
|
|
resolveWebviewView: vi.fn(),
|
|
}
|
|
|
|
const disposable = windowAPI.registerWebviewViewProvider("myView", mockProvider)
|
|
|
|
expect(disposable).toBeDefined()
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("registerUriHandler()", () => {
|
|
it("should return a disposable", () => {
|
|
const mockHandler = {
|
|
handleUri: vi.fn(),
|
|
}
|
|
|
|
const disposable = windowAPI.registerUriHandler(mockHandler)
|
|
|
|
expect(disposable).toBeDefined()
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("onDidChangeTextEditorSelection()", () => {
|
|
it("should return a disposable", () => {
|
|
const disposable = windowAPI.onDidChangeTextEditorSelection(() => {})
|
|
|
|
expect(disposable).toBeDefined()
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("onDidChangeActiveTextEditor()", () => {
|
|
it("should return a disposable", () => {
|
|
const disposable = windowAPI.onDidChangeActiveTextEditor(() => {})
|
|
|
|
expect(disposable).toBeDefined()
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("onDidChangeVisibleTextEditors()", () => {
|
|
it("should return a disposable", () => {
|
|
const disposable = windowAPI.onDidChangeVisibleTextEditors(() => {})
|
|
|
|
expect(disposable).toBeDefined()
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("terminal events", () => {
|
|
it("onDidCloseTerminal should return disposable", () => {
|
|
const disposable = windowAPI.onDidCloseTerminal(() => {})
|
|
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
|
|
it("onDidOpenTerminal should return disposable", () => {
|
|
const disposable = windowAPI.onDidOpenTerminal(() => {})
|
|
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
|
|
it("onDidChangeActiveTerminal should return disposable", () => {
|
|
const disposable = windowAPI.onDidChangeActiveTerminal(() => {})
|
|
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
|
|
it("onDidChangeTerminalDimensions should return disposable", () => {
|
|
const disposable = windowAPI.onDidChangeTerminalDimensions(() => {})
|
|
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
|
|
it("onDidWriteTerminalData should return disposable", () => {
|
|
const disposable = windowAPI.onDidWriteTerminalData(() => {})
|
|
|
|
expect(typeof disposable.dispose).toBe("function")
|
|
})
|
|
})
|
|
|
|
describe("activeTerminal property", () => {
|
|
it("should return undefined", () => {
|
|
expect(windowAPI.activeTerminal).toBeUndefined()
|
|
})
|
|
})
|
|
|
|
describe("terminals property", () => {
|
|
it("should return empty array", () => {
|
|
expect(windowAPI.terminals).toEqual([])
|
|
})
|
|
})
|
|
})
|