mirror of
https://github.com/stablyai/orca.git
synced 2026-10-20 08:03:28 +00:00
test(preload): exercise restart IPC registrations
This commit is contained in:
@@ -279,8 +279,7 @@ import {
|
||||
} from '../shared/renderer-restart-preparation'
|
||||
import {
|
||||
prepareAndInvokeUpdaterInstall,
|
||||
relayRendererUnloadPrevented,
|
||||
relayUpdaterStatus
|
||||
registerRendererRestartIpcRelays
|
||||
} from './renderer-restart-wiring'
|
||||
|
||||
type NativeFileDropCallback = (data: NativeFileDropPayload) => void
|
||||
@@ -292,12 +291,7 @@ const updaterQuitAbortRelay = createUpdaterQuitAbortRelay(
|
||||
ORCA_UPDATER_QUIT_AND_INSTALL_ABORTED_EVENT
|
||||
)
|
||||
|
||||
ipcRenderer.on('updater:status', (_event, status: UpdateStatus) => {
|
||||
relayUpdaterStatus(updaterQuitAbortRelay, status)
|
||||
})
|
||||
ipcRenderer.on('window:unload-prevented', () => {
|
||||
relayRendererUnloadPrevented(window)
|
||||
})
|
||||
registerRendererRestartIpcRelays(ipcRenderer, window, updaterQuitAbortRelay)
|
||||
|
||||
function getLinuxDisplayServer(): 'wayland' | 'x11' | null {
|
||||
if (process.platform !== 'linux') {
|
||||
|
||||
@@ -3,8 +3,7 @@ import { ORCA_RENDERER_UNLOAD_PREVENTED_EVENT } from '../shared/renderer-shutdow
|
||||
import { ORCA_UPDATER_QUIT_AND_INSTALL_STARTED_EVENT } from '../shared/updater-renderer-events'
|
||||
import {
|
||||
prepareAndInvokeUpdaterInstall,
|
||||
relayRendererUnloadPrevented,
|
||||
relayUpdaterStatus
|
||||
registerRendererRestartIpcRelays
|
||||
} from './renderer-restart-wiring'
|
||||
|
||||
describe('renderer restart wiring', () => {
|
||||
@@ -12,11 +11,20 @@ describe('renderer restart wiring', () => {
|
||||
const eventTarget = new EventTarget()
|
||||
const unloadPrevented = vi.fn()
|
||||
const handleStatus = vi.fn()
|
||||
const listeners = new Map<string, (...args: unknown[]) => void>()
|
||||
const ipcRenderer = {
|
||||
on: vi.fn((channel: string, listener: (...args: unknown[]) => void) => {
|
||||
listeners.set(channel, listener)
|
||||
return ipcRenderer
|
||||
})
|
||||
} as unknown as Parameters<typeof registerRendererRestartIpcRelays>[0]
|
||||
eventTarget.addEventListener(ORCA_RENDERER_UNLOAD_PREVENTED_EVENT, unloadPrevented)
|
||||
|
||||
relayUpdaterStatus({ handleStatus }, { state: 'error', message: 'install failed' })
|
||||
relayRendererUnloadPrevented(eventTarget)
|
||||
registerRendererRestartIpcRelays(ipcRenderer, eventTarget, { handleStatus })
|
||||
listeners.get('updater:status')?.({}, { state: 'error', message: 'install failed' })
|
||||
listeners.get('window:unload-prevented')?.({})
|
||||
|
||||
expect(ipcRenderer.on).toHaveBeenCalledTimes(2)
|
||||
expect(handleStatus).toHaveBeenCalledWith({ state: 'error', message: 'install failed' })
|
||||
expect(unloadPrevented).toHaveBeenCalledTimes(1)
|
||||
})
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import type { IpcRenderer } from 'electron'
|
||||
import { ORCA_RENDERER_UNLOAD_PREVENTED_EVENT } from '../shared/renderer-shutdown-events'
|
||||
import {
|
||||
prepareRendererForAppRestart,
|
||||
@@ -9,15 +10,17 @@ import {
|
||||
ORCA_UPDATER_QUIT_AND_INSTALL_STARTED_EVENT
|
||||
} from '../shared/updater-renderer-events'
|
||||
|
||||
export function relayUpdaterStatus(
|
||||
relay: Pick<UpdaterQuitAbortRelay, 'handleStatus'>,
|
||||
status: UpdateStatus
|
||||
export function registerRendererRestartIpcRelays(
|
||||
ipcRenderer: Pick<IpcRenderer, 'on'>,
|
||||
eventTarget: EventTarget,
|
||||
relay: Pick<UpdaterQuitAbortRelay, 'handleStatus'>
|
||||
): void {
|
||||
relay.handleStatus(status)
|
||||
}
|
||||
|
||||
export function relayRendererUnloadPrevented(eventTarget: EventTarget): void {
|
||||
eventTarget.dispatchEvent(new Event(ORCA_RENDERER_UNLOAD_PREVENTED_EVENT))
|
||||
ipcRenderer.on('updater:status', (_event, status: UpdateStatus) => {
|
||||
relay.handleStatus(status)
|
||||
})
|
||||
ipcRenderer.on('window:unload-prevented', () => {
|
||||
eventTarget.dispatchEvent(new Event(ORCA_RENDERER_UNLOAD_PREVENTED_EVENT))
|
||||
})
|
||||
}
|
||||
|
||||
export async function prepareAndInvokeUpdaterInstall(
|
||||
|
||||
Reference in New Issue
Block a user