Roo-Code/src/__mocks__/vscode.js
Chris Estreich 62c3914034
Farewell jest (#4607)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-06-16 21:39:45 -07:00

174 lines
3.3 KiB
JavaScript

// Mock VSCode API for Vitest tests
const mockEventEmitter = () => ({
event: () => () => {},
fire: () => {},
dispose: () => {},
})
const mockDisposable = {
dispose: () => {},
}
const mockUri = {
file: (path) => ({ fsPath: path, path, scheme: "file" }),
parse: (path) => ({ fsPath: path, path, scheme: "file" }),
}
const mockRange = class {
constructor(start, end) {
this.start = start
this.end = end
}
}
const mockPosition = class {
constructor(line, character) {
this.line = line
this.character = character
}
}
const mockSelection = class extends mockRange {
constructor(start, end) {
super(start, end)
this.anchor = start
this.active = end
}
}
export const workspace = {
workspaceFolders: [],
getWorkspaceFolder: () => null,
onDidChangeWorkspaceFolders: () => mockDisposable,
getConfiguration: () => ({
get: () => null,
}),
createFileSystemWatcher: () => ({
onDidCreate: () => mockDisposable,
onDidChange: () => mockDisposable,
onDidDelete: () => mockDisposable,
dispose: () => {},
}),
fs: {
readFile: () => Promise.resolve(new Uint8Array()),
writeFile: () => Promise.resolve(),
stat: () => Promise.resolve({ type: 1, ctime: 0, mtime: 0, size: 0 }),
},
}
export const window = {
activeTextEditor: null,
onDidChangeActiveTextEditor: () => mockDisposable,
showErrorMessage: () => Promise.resolve(),
showWarningMessage: () => Promise.resolve(),
showInformationMessage: () => Promise.resolve(),
createOutputChannel: () => ({
appendLine: () => {},
append: () => {},
clear: () => {},
show: () => {},
dispose: () => {},
}),
createTerminal: () => ({
exitStatus: undefined,
name: "Roo Code",
processId: Promise.resolve(123),
creationOptions: {},
state: { isInteractedWith: true },
dispose: () => {},
hide: () => {},
show: () => {},
sendText: () => {},
}),
onDidCloseTerminal: () => mockDisposable,
createTextEditorDecorationType: () => ({ dispose: () => {} }),
}
export const commands = {
registerCommand: () => mockDisposable,
executeCommand: () => Promise.resolve(),
}
export const languages = {
createDiagnosticCollection: () => ({
set: () => {},
delete: () => {},
clear: () => {},
dispose: () => {},
}),
}
export const extensions = {
getExtension: () => null,
}
export const env = {
openExternal: () => Promise.resolve(),
}
export const Uri = mockUri
export const Range = mockRange
export const Position = mockPosition
export const Selection = mockSelection
export const Disposable = mockDisposable
export const ThemeIcon = class {
constructor(id) {
this.id = id
}
}
export const FileType = {
File: 1,
Directory: 2,
SymbolicLink: 64,
}
export const DiagnosticSeverity = {
Error: 0,
Warning: 1,
Information: 2,
Hint: 3,
}
export const OverviewRulerLane = {
Left: 1,
Center: 2,
Right: 4,
Full: 7,
}
export const CodeAction = class {
constructor(title, kind) {
this.title = title
this.kind = kind
this.command = undefined
}
}
export const CodeActionKind = {
QuickFix: { value: "quickfix" },
RefactorRewrite: { value: "refactor.rewrite" },
}
export const EventEmitter = mockEventEmitter
export default {
workspace,
window,
commands,
languages,
extensions,
env,
Uri,
Range,
Position,
Selection,
Disposable,
ThemeIcon,
FileType,
DiagnosticSeverity,
OverviewRulerLane,
EventEmitter,
CodeAction,
CodeActionKind,
}