fix(yaml): round-trip show_port_numbers on export/import

YAML export wrote per-side handle counts but never the
show_port_numbers toggle, so the option was lost on re-import
while connection points survived.

ha-relevant: maybe

Fixes #272
This commit is contained in:
Pouzor
2026-07-19 15:15:13 +02:00
parent 28fc4d8a7f
commit 16d6348cec
5 changed files with 42 additions and 0 deletions
@@ -208,4 +208,12 @@ describe('exportCanvasToYaml', () => {
expect(entry).not.toHaveProperty('topHandles')
expect(entry).not.toHaveProperty('leftHandles')
})
it('exports showPortNumbers only when enabled (issue #272)', () => {
const on = (yaml.load(exportCanvasToYaml([makeNode({ label: 'On', type: 'server', show_port_numbers: true })], [])) as Record<string, unknown>[])[0]
expect(on.showPortNumbers).toBe(true)
const off = (yaml.load(exportCanvasToYaml([makeNode({ label: 'Off', type: 'server', show_port_numbers: false })], [])) as Record<string, unknown>[])[0]
expect(off).not.toHaveProperty('showPortNumbers')
})
})
@@ -368,4 +368,30 @@ describe('parseYamlToCanvas', () => {
expect(edges[0].targetHandle).toBe('top-t')
expect(nodes.find((n) => n.data.label === 'Switch')!.data.bottom_handles).toBe(3)
})
// Regression for issue #272.
it('restores the show-port-numbers toggle from YAML', () => {
const yaml = `
- nodeType: server
label: "Server"
showPortNumbers: true
`
const { nodes } = parseYamlToCanvas(yaml, empty, emptyEdges)
expect(nodes.find((n) => n.data.label === 'Server')!.data.show_port_numbers).toBe(true)
})
it('round-trips show-port-numbers through export → import (issue #272)', () => {
const on: Node<NodeData> = {
id: 'on', type: 'server', position: { x: 0, y: 0 },
data: { label: 'On', type: 'server', status: 'online', services: [], show_port_numbers: true },
}
const off: Node<NodeData> = {
id: 'off', type: 'server', position: { x: 0, y: 0 },
data: { label: 'Off', type: 'server', status: 'online', services: [] },
}
const yamlStr = exportCanvasToYaml([on, off], [])
const { nodes } = parseYamlToCanvas(yamlStr, empty, emptyEdges)
expect(nodes.find((n) => n.data.label === 'On')!.data.show_port_numbers).toBe(true)
expect(nodes.find((n) => n.data.label === 'Off')!.data.show_port_numbers).toBeUndefined()
})
})