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') })