All files / backend/test/mocks adapters.ts

34.48% Statements 10/29
50% Branches 1/2
69.23% Functions 9/13
34.48% Lines 10/29

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();
}