mirror of
https://github.com/hansjone/netxops.git
synced 2026-10-19 21:44:06 +08:00
27 lines
1.5 KiB
JavaScript
27 lines
1.5 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { createWaitingSettingsScope, findReadySettingsForm } from '../src/client/settings-form.ts'
|
|
import { CardForm, booleanFieldPersistFalse } from '../src/client/card-form.ts'
|
|
|
|
test('unconnected settings cannot report a successful local-only publication save', async () => {
|
|
const scope = createWaitingSettingsScope({ toolsEnabled: true })
|
|
const form = new CardForm(scope, [booleanFieldPersistFalse('toolsEnabled')])
|
|
assert.equal(form.shell().available, false)
|
|
assert.equal(form.shell().writable, false)
|
|
form.actions().edit('toolsEnabled', 'false')
|
|
await form.save(['toolsEnabled'])
|
|
assert.equal(scope.getSnapshot().value.toolsEnabled, true)
|
|
assert.equal(form.shell().failed, true)
|
|
assert.equal(form.shell().dirty, true)
|
|
await assert.rejects(scope.set('toolsEnabled', false), /settings_transport_unavailable/)
|
|
})
|
|
|
|
test('form selection ignores unknown namespace placeholders and waits for the real namespace', () => {
|
|
let ready = false
|
|
const actual = { getSnapshot: () => ({ status: ready ? 'ready' : 'loading', writable: ready }) }
|
|
const placeholder = { getSnapshot: () => ({ status: 'unavailable', writable: false }) }
|
|
const forms = { get(id) { return id === 'netxops' ? actual : placeholder } }
|
|
assert.equal(findReadySettingsForm(forms, ['client-entry-id', 'netxops', 'dsh-netxops']), undefined)
|
|
ready = true
|
|
assert.deepEqual(findReadySettingsForm(forms, ['client-entry-id', 'netxops', 'dsh-netxops']), { ns: 'netxops', scope: actual })
|
|
})
|