hermes-agent/apps/desktop/electron/version-ipc.test.cjs
Brooklyn Nicholson 9d19cfbb78 refactor(desktop): extract app-version IPC from main.cjs into version-ipc.cjs
Ninth main.cjs cluster peel. The hermes:version handler moves verbatim into
electron/version-ipc.cjs behind a registerVersionIpc({ ipcMain,
resolveHermesVersion, resolveUpdateRoot }) registrar. The version + root resolvers
stay in the main process (shared with the About menu) and are injected.

Channel name unchanged → preload + renderer untouched. Adds
electron/version-ipc.test.cjs (surface + payload behavior).
2026-06-30 14:12:39 -05:00

41 lines
1.3 KiB
JavaScript

'use strict'
const assert = require('node:assert/strict')
const test = require('node:test')
const { registerVersionIpc } = require('./version-ipc.cjs')
function fakeIpcMain() {
const handlers = new Map()
return {
handlers,
handle(channel, handler) {
assert.ok(!handlers.has(channel), `duplicate registration for ${channel}`)
handlers.set(channel, handler)
}
}
}
test('registerVersionIpc wires hermes:version to a handler fn', () => {
const ipcMain = fakeIpcMain()
registerVersionIpc({ ipcMain, resolveHermesVersion: () => '1.2.3', resolveUpdateRoot: () => '/root' })
assert.deepEqual([...ipcMain.handlers.keys()], ['hermes:version'])
assert.equal(typeof ipcMain.handlers.get('hermes:version'), 'function')
})
test('version reports the resolved Hermes version + root alongside runtime versions', async () => {
const ipcMain = fakeIpcMain()
registerVersionIpc({ ipcMain, resolveHermesVersion: () => '1.2.3', resolveUpdateRoot: () => '/root' })
const res = await ipcMain.handlers.get('hermes:version')({})
assert.equal(res.appVersion, '1.2.3')
assert.equal(res.hermesRoot, '/root')
assert.equal(res.electronVersion, process.versions.electron)
assert.equal(res.nodeVersion, process.versions.node)
assert.equal(res.platform, process.platform)
})