Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | 9x 9x 9x 9x 16x 7x 7x 9x 9x 9x | /**
* Mock Platform Adapters for Testing
*
* These mocks simulate platform-specific functionality without requiring
* Electron or other platform dependencies.
*/
import { vi } from 'vitest';
import type {
PlatformAdapters,
DialogAdapter,
ShellAdapter,
WindowAdapter,
MenuAdapter,
AppInfoAdapter,
OutputConsole,
ScreenshotWindowManager,
} from '../../src/adapters/types.js';
export function createMockDialogAdapter(): DialogAdapter {
return {
showOpenDialog: vi.fn().mockResolvedValue([]),
showSaveDialog: vi.fn().mockResolvedValue(undefined),
showMessageBox: vi.fn().mockResolvedValue(0),
};
}
export function createMockShellAdapter(): ShellAdapter {
return {
openExternal: vi.fn().mockResolvedValue(undefined),
showItemInFolder: vi.fn(),
openPath: vi.fn().mockResolvedValue(''),
};
}
export function createMockWindowAdapter(): WindowAdapter {
return {
showLogWindow: vi.fn(),
reloadMainWindow: vi.fn(),
sendToRenderer: vi.fn(),
openSiteLibrary: vi.fn().mockResolvedValue(undefined),
setMenuBarVisibility: vi.fn(),
appendToOutputConsole: vi.fn(),
};
}
export function createMockMenuAdapter(): MenuAdapter {
return {
setMenuItemEnabled: vi.fn(),
createMainMenu: vi.fn(),
};
}
export function createMockAppInfoAdapter(overrides?: Partial<AppInfoAdapter>): AppInfoAdapter {
return {
isPackaged: () => false,
getAppPath: () => '/mock/app/path',
getVersion: () => '1.0.0-test',
getPath: (name: 'home' | 'appData' | 'userData' | 'temp' | 'downloads') => {
const paths: Record<string, string> = {
home: '/mock/home',
appData: '/mock/appData',
userData: '/mock/userData',
temp: '/mock/temp',
downloads: '/mock/downloads',
};
return paths[name] || '/mock/unknown';
},
...overrides,
};
}
export function createMockOutputConsole(): OutputConsole {
return {
appendLine: vi.fn(),
};
}
export function createMockScreenshotWindowManager(): ScreenshotWindowManager {
return {
createScreenshotAndFavicon: vi.fn(),
};
}
/**
* Create a complete set of mock platform adapters
*/
export function createMockAdapters(overrides?: Partial<PlatformAdapters>): PlatformAdapters {
return {
dialog: createMockDialogAdapter(),
shell: createMockShellAdapter(),
window: createMockWindowAdapter(),
menu: createMockMenuAdapter(),
appInfo: createMockAppInfoAdapter(),
outputConsole: createMockOutputConsole(),
screenshotWindowManager: createMockScreenshotWindowManager(),
...overrides,
};
}
/**
* Reset all mocks in the adapter set
*/
export function resetAdapterMocks(adapters: PlatformAdapters): void {
// Reset dialog adapter
vi.mocked(adapters.dialog.showOpenDialog).mockReset();
vi.mocked(adapters.dialog.showSaveDialog).mockReset();
vi.mocked(adapters.dialog.showMessageBox).mockReset();
// Reset shell adapter
vi.mocked(adapters.shell.openExternal).mockReset();
vi.mocked(adapters.shell.showItemInFolder).mockReset();
vi.mocked(adapters.shell.openPath).mockReset();
// Reset window adapter
vi.mocked(adapters.window.showLogWindow).mockReset();
vi.mocked(adapters.window.reloadMainWindow).mockReset();
vi.mocked(adapters.window.sendToRenderer).mockReset();
vi.mocked(adapters.window.openSiteLibrary).mockReset();
vi.mocked(adapters.window.setMenuBarVisibility).mockReset();
vi.mocked(adapters.window.appendToOutputConsole).mockReset();
// Reset menu adapter
vi.mocked(adapters.menu.setMenuItemEnabled).mockReset();
vi.mocked(adapters.menu.createMainMenu).mockReset();
// Reset output console
vi.mocked(adapters.outputConsole.appendLine).mockReset();
// Reset screenshot window manager
vi.mocked(adapters.screenshotWindowManager.createScreenshotAndFavicon).mockReset();
}
|