Files
lms-fe/scripts/test-linked-ros-settings.cjs
T

38 lines
1.8 KiB
JavaScript

const { test } = require('node:test')
const assert = require('node:assert/strict')
const fs = require('node:fs')
const vm = require('node:vm')
const ts = require('typescript')
function setup() {
const data = new Map()
const exports = {}
vm.runInNewContext(ts.transpileModule(fs.readFileSync(require.resolve('../src/renderer/src/features/workspace/sourceSettings.ts'), 'utf8'), {
compilerOptions: { module: ts.ModuleKind.CommonJS, target: ts.ScriptTarget.ES2022 },
}).outputText, {
exports,
require: () => ({ STUDIO_SOURCE_SETTINGS_STORAGE_KEY: 'test-settings' }),
window: { localStorage: { getItem: key => data.get(key) ?? null, setItem: (key, value) => data.set(key, value) } },
})
return exports
}
test('remote workspace reads local domain and linked platform by actual platform ID', () => {
const api = setup()
api.storeStudioSourceSettings('local-platform-uuid', { ...api.defaultStudioSourceSettings, rosDomainId: '75', rosLinkedPlatformId: 'yahboom-uuid' })
const result = api.readLocalStudioSourceSettings([
{ id: 'yahboom-uuid', platformKey: 'yahboom', sourceSettings: { rosDomainId: '77' } },
{ id: 'local-platform-uuid', platformKey: 'futuredrive-local-pc' },
])
assert.equal(result.rosDomainId, '75')
assert.equal(result.rosLinkedPlatformId, 'yahboom-uuid')
})
test('local platform defaults and unlinked selection are preserved', () => {
const api = setup()
const platforms = [{ id: 'local-platform-uuid', platformKey: 'futuredrive-local-pc', sourceSettings: { rosDomainId: '76' } }]
assert.equal(api.readLocalStudioSourceSettings(platforms).rosDomainId, '76')
api.storeStudioSourceSettings('local-platform-uuid', { ...api.defaultStudioSourceSettings, rosDomainId: '75', rosLinkedPlatformId: null })
assert.equal(api.readLocalStudioSourceSettings(platforms).rosLinkedPlatformId, null)
})