Files
homelable/frontend/src/utils/__tests__/virtualEdgeParent.test.ts
T
Pouzor 43426e96ac feat(docker): allow vm and proxmox as parent for docker_container
Extend docker_container parent rule to accept vm and proxmox nodes
in addition to docker_host and lxc, covering nested virtualization
topologies (Docker on a VM, Docker directly on Proxmox host).

ha-relevant: yes
2026-05-16 16:47:14 +02:00

77 lines
2.4 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { resolveVirtualEdgeParent } from '../virtualEdgeParent'
describe('resolveVirtualEdgeParent', () => {
it('nests lxc under proxmox (container-mode parent)', () => {
const res = resolveVirtualEdgeParent(
{ id: 'lxc1', type: 'lxc' },
{ id: 'px1', type: 'proxmox' },
)
expect(res).toEqual({ childId: 'lxc1', parentId: 'px1' })
})
it('nests vm under proxmox regardless of edge direction', () => {
const res = resolveVirtualEdgeParent(
{ id: 'px1', type: 'proxmox' },
{ id: 'vm1', type: 'vm' },
)
expect(res).toEqual({ childId: 'vm1', parentId: 'px1' })
})
it('nests docker_container under docker_host', () => {
const res = resolveVirtualEdgeParent(
{ id: 'dc1', type: 'docker_container' },
{ id: 'dh1', type: 'docker_host' },
)
expect(res).toEqual({ childId: 'dc1', parentId: 'dh1' })
})
it('nests docker_container under lxc (reverse direction)', () => {
const res = resolveVirtualEdgeParent(
{ id: 'lxc1', type: 'lxc' },
{ id: 'dc1', type: 'docker_container' },
)
expect(res).toEqual({ childId: 'dc1', parentId: 'lxc1' })
})
it('nests docker_container under lxc (forward direction)', () => {
const res = resolveVirtualEdgeParent(
{ id: 'dc1', type: 'docker_container' },
{ id: 'lxc1', type: 'lxc' },
)
expect(res).toEqual({ childId: 'dc1', parentId: 'lxc1' })
})
it('nests docker_container under vm', () => {
const res = resolveVirtualEdgeParent(
{ id: 'dc1', type: 'docker_container' },
{ id: 'vm1', type: 'vm' },
)
expect(res).toEqual({ childId: 'dc1', parentId: 'vm1' })
})
it('nests docker_container under proxmox (reverse direction)', () => {
const res = resolveVirtualEdgeParent(
{ id: 'px1', type: 'proxmox' },
{ id: 'dc1', type: 'docker_container' },
)
expect(res).toEqual({ childId: 'dc1', parentId: 'px1' })
})
it('returns null when docker_container links to unsupported parent type', () => {
const res = resolveVirtualEdgeParent(
{ id: 'dc1', type: 'docker_container' },
{ id: 'srv1', type: 'server' },
)
expect(res).toBeNull()
})
it('returns null for unrelated type pairs', () => {
const res = resolveVirtualEdgeParent(
{ id: 'srv1', type: 'server' },
{ id: 'rt1', type: 'router' },
)
expect(res).toBeNull()
})
})