Kairo-Jinkendo/frontend/src/plan/gateGraphTopology.test.js

35 lines
1.1 KiB
JavaScript
Raw Normal View History

import { describe, expect, it } from 'vitest'
import {
DEFERRED_TOPOLOGY_EDGE_KINDS,
DESIGNER_EDGE_KINDS,
edgeKindNeedsGroupKey,
resolveDependencyEndpoints,
} from './gateGraphTopology.js'
describe('gateGraphTopology', () => {
it('includes topology kinds in designer', () => {
expect(DESIGNER_EDGE_KINDS).toContain('requires')
expect(DESIGNER_EDGE_KINDS).toContain('parallel_group')
expect(DESIGNER_EDGE_KINDS).toContain('optional_branch')
for (const kind of DEFERRED_TOPOLOGY_EDGE_KINDS) {
expect(DESIGNER_EDGE_KINDS).toContain(kind)
}
})
it('requires group_key for parallel_group', () => {
expect(edgeKindNeedsGroupKey('parallel_group')).toBe(true)
expect(edgeKindNeedsGroupKey('requires')).toBe(false)
})
it('resolves requires edge direction for join semantics', () => {
expect(resolveDependencyEndpoints('requires', 'a', 'b')).toEqual({
from_item_id: 'b',
to_item_id: 'a',
})
expect(resolveDependencyEndpoints('optional_branch', 'a', 'b')).toEqual({
from_item_id: 'a',
to_item_id: 'b',
})
})
})