Skip to content
3 changes: 3 additions & 0 deletions __mocks__/vscode.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ const MockTreeItemCollapsibleState = {
Expanded: 2
};

const registerTreeDataProviderMock = jest.fn(() => ({ dispose: jest.fn() }));

class MockTreeItem {
label;
description;
Expand Down Expand Up @@ -71,6 +73,7 @@ module.exports = {
warn: jest.fn(),
error: jest.fn(),
})),
registerTreeDataProvider: registerTreeDataProviderMock,
showWarningMessage: jest.fn(),
createStatusBarItem: jest.fn(),
showQuickPick: jest.fn(),
Expand Down
9 changes: 1 addition & 8 deletions src/views/live-watch/live-watch.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ import { GDBTargetDebugSession, GDBTargetDebugTracker } from '../../debug-sessio
import { gdbTargetConfiguration } from '../../debug-configuration/debug-configuration.factory';
import { GDBTargetConfiguration } from '../../debug-configuration';

// Inline mock for registerTreeDataProvider specific to these tests
const registerTreeDataProviderMock = jest.fn(() => ({ dispose: jest.fn() }));

describe('LiveWatchTreeDataProvider', () => {
let liveWatchTreeDataProvider: LiveWatchTreeDataProvider;
Expand All @@ -50,19 +48,15 @@ describe('LiveWatchTreeDataProvider', () => {

describe('session management and connection tests', () => {
it('should activate the live watch tree data provider', () => {
(vscode.window).registerTreeDataProvider = registerTreeDataProviderMock;
liveWatchTreeDataProvider.activate(tracker);
});

it('registers the live watch tree data provider', async () => {
(vscode.window).registerTreeDataProvider = registerTreeDataProviderMock;
registerTreeDataProviderMock.mockClear();
liveWatchTreeDataProvider.activate(tracker);
expect(registerTreeDataProviderMock).toHaveBeenCalledWith('cmsis-debugger.liveWatch', liveWatchTreeDataProvider);
expect(vscode.window.registerTreeDataProvider).toHaveBeenCalledWith('cmsis-debugger.liveWatch', liveWatchTreeDataProvider);
});

it('manages session lifecycles correctly', async () => {
(vscode.window).registerTreeDataProvider = registerTreeDataProviderMock;
liveWatchTreeDataProvider.activate(tracker);
// No active session yet
expect((liveWatchTreeDataProvider as any).activeSession).toBeUndefined();
Expand Down Expand Up @@ -221,7 +215,6 @@ describe('LiveWatchTreeDataProvider', () => {
describe('command registration', () => {
beforeEach(() => {
(vscode.commands as any).registerCommand?.mockClear?.();
(vscode.window as any).registerTreeDataProvider = registerTreeDataProviderMock;
});

function getRegisteredHandler(commandId: string) {
Expand Down