66 lines
1.8 KiB
TypeScript
66 lines
1.8 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { filterVisibleGraphEdges } from '../../../../packages/agent-graph/src/ui/GraphView';
|
|
|
|
import type { GraphEdge } from '@claude-teams/agent-graph';
|
|
|
|
const parentEdge: GraphEdge = {
|
|
id: 'edge:parent:lead:alice',
|
|
source: 'lead:team',
|
|
target: 'member:team:alice',
|
|
type: 'parent-child',
|
|
};
|
|
|
|
const ownershipEdge: GraphEdge = {
|
|
id: 'edge:own:alice:task-1',
|
|
source: 'member:team:alice',
|
|
target: 'task:team:task-1',
|
|
type: 'ownership',
|
|
};
|
|
|
|
const messageEdge: GraphEdge = {
|
|
id: 'edge:msg:member:team:alice:member:team:bob',
|
|
source: 'member:team:alice',
|
|
target: 'member:team:bob',
|
|
type: 'message',
|
|
};
|
|
|
|
describe('filterVisibleGraphEdges', () => {
|
|
it('keeps only active routes when static edges are hidden', () => {
|
|
const visibleNodeIds = new Set([
|
|
'lead:team',
|
|
'member:team:alice',
|
|
'member:team:bob',
|
|
'task:team:task-1',
|
|
]);
|
|
|
|
expect(
|
|
filterVisibleGraphEdges(
|
|
[parentEdge, ownershipEdge, messageEdge],
|
|
visibleNodeIds,
|
|
false,
|
|
new Set([parentEdge.id, messageEdge.id])
|
|
).map((edge) => edge.id)
|
|
).toEqual([parentEdge.id, messageEdge.id]);
|
|
});
|
|
|
|
it('hides all idle routes when static edges are hidden', () => {
|
|
const visibleNodeIds = new Set(['lead:team', 'member:team:alice', 'member:team:bob']);
|
|
|
|
expect(
|
|
filterVisibleGraphEdges([parentEdge, messageEdge], visibleNodeIds, false).map(
|
|
(edge) => edge.id
|
|
)
|
|
).toEqual([]);
|
|
});
|
|
|
|
it('keeps static routes when edges are enabled', () => {
|
|
const visibleNodeIds = new Set(['lead:team', 'member:team:alice', 'member:team:bob']);
|
|
|
|
expect(
|
|
filterVisibleGraphEdges([parentEdge, messageEdge], visibleNodeIds, true).map(
|
|
(edge) => edge.id
|
|
)
|
|
).toEqual([parentEdge.id, messageEdge.id]);
|
|
});
|
|
});
|