Files
peardock/test/ota-config.test.js
T
2026-07-14 20:05:40 -04:00

56 lines
2.0 KiB
JavaScript

import test from 'brittle'
import { createRequire } from 'module'
import path from 'path'
import { fileURLToPath } from 'url'
const require = createRequire(import.meta.url)
const otaConfig = require('../lib/ota-config.cjs')
const pkg = {
version: '2.0.1',
productName: 'peardock',
upgrade: 'pear://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
upgradeClient: 'pear://bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
upgradeServer: 'pear://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc',
}
test('resolveUpgradeLink prefers kind-specific fields', (t) => {
t.is(otaConfig.resolveUpgradeLink('client', pkg), pkg.upgradeClient)
t.is(otaConfig.resolveUpgradeLink('server', pkg), pkg.upgradeServer)
})
test('buildUpdaterOptions client enables with pear:// link', (t) => {
const cfg = otaConfig.buildUpdaterOptions('client', {
pkg,
dir: '/tmp/peardock-ota-test',
app: '/tmp/peardock-client',
})
t.ok(cfg.enabled)
t.is(cfg.upgrade, pkg.upgradeClient)
t.is(cfg.version, '2.0.1')
t.ok(cfg.name)
t.is(cfg.dir, '/tmp/peardock-ota-test')
})
test('buildUpdaterOptions disabled without pear link', (t) => {
const cfg = otaConfig.buildUpdaterOptions('client', {
pkg: { version: '1.0.0' },
dir: '/tmp/x',
})
t.absent(cfg.enabled)
})
test('artifactName client varies by platform', (t) => {
t.is(otaConfig.artifactName('client', { platform: 'darwin' }), 'peardock.app')
t.is(otaConfig.artifactName('client', { platform: 'win32' }), 'peardock-client.exe')
t.is(otaConfig.artifactName('client', { platform: 'linux' }), 'peardock-client')
t.is(otaConfig.artifactName('server', { platform: 'linux' }), 'peardock-server')
})
test('ota-config module is loadable from electron-relative path', (t) => {
const root = path.join(path.dirname(fileURLToPath(import.meta.url)), '..')
const mod = require(path.join(root, 'lib', 'ota-config.cjs'))
t.is(typeof mod.buildUpdaterOptions, 'function')
t.is(typeof mod.artifactName, 'function')
})