Files
ComfyUI_frontend/tests-ui/tests/litegraph/subgraph/subgraphUtils.test.ts
snomiao 8bfb1009ce [style] migrate to @prettier/plugin-oxc for faster formatting
Replace @trivago/prettier-plugin-sort-imports with @prettier/plugin-oxc
and @ianvs/prettier-plugin-sort-imports for improved performance.

Changes:
- Add @prettier/plugin-oxc (Rust-based fast parser)
- Add @ianvs/prettier-plugin-sort-imports (import sorting compatible with oxc)
- Remove @trivago/prettier-plugin-sort-imports
- Update .prettierrc to use new plugins and compatible import order config
- Reformat all files with new plugin configuration

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-19 00:02:04 +00:00

151 lines
4.7 KiB
TypeScript

// TODO: Fix these tests after migration
import { describe, expect, it } from 'vitest'
import {
findUsedSubgraphIds,
getDirectSubgraphIds,
LGraph,
type UUID
} from '@/lib/litegraph/src/litegraph'
import {
createTestSubgraph,
createTestSubgraphNode
} from './fixtures/subgraphHelpers'
describe.skip('subgraphUtils', () => {
describe.skip('getDirectSubgraphIds', () => {
it('should return empty set for graph with no subgraph nodes', () => {
const graph = new LGraph()
const result = getDirectSubgraphIds(graph)
expect(result.size).toBe(0)
})
it('should find single subgraph node', () => {
const graph = new LGraph()
const subgraph = createTestSubgraph()
const subgraphNode = createTestSubgraphNode(subgraph)
graph.add(subgraphNode)
const result = getDirectSubgraphIds(graph)
expect(result.size).toBe(1)
expect(result.has(subgraph.id)).toBe(true)
})
it('should find multiple unique subgraph nodes', () => {
const graph = new LGraph()
const subgraph1 = createTestSubgraph({ name: 'Subgraph 1' })
const subgraph2 = createTestSubgraph({ name: 'Subgraph 2' })
const node1 = createTestSubgraphNode(subgraph1)
const node2 = createTestSubgraphNode(subgraph2)
graph.add(node1)
graph.add(node2)
const result = getDirectSubgraphIds(graph)
expect(result.size).toBe(2)
expect(result.has(subgraph1.id)).toBe(true)
expect(result.has(subgraph2.id)).toBe(true)
})
it('should return unique IDs when same subgraph is used multiple times', () => {
const graph = new LGraph()
const subgraph = createTestSubgraph()
const node1 = createTestSubgraphNode(subgraph, { id: 1 })
const node2 = createTestSubgraphNode(subgraph, { id: 2 })
graph.add(node1)
graph.add(node2)
const result = getDirectSubgraphIds(graph)
expect(result.size).toBe(1)
expect(result.has(subgraph.id)).toBe(true)
})
})
describe.skip('findUsedSubgraphIds', () => {
it('should handle graph with no subgraphs', () => {
const graph = new LGraph()
const registry = new Map<UUID, any>()
const result = findUsedSubgraphIds(graph, registry)
expect(result.size).toBe(0)
})
it('should find nested subgraphs', () => {
const rootGraph = new LGraph()
const subgraph1 = createTestSubgraph({ name: 'Level 1' })
const subgraph2 = createTestSubgraph({ name: 'Level 2' })
// Add subgraph1 node to root
const node1 = createTestSubgraphNode(subgraph1)
rootGraph.add(node1)
// Add subgraph2 node inside subgraph1
const node2 = createTestSubgraphNode(subgraph2)
subgraph1.add(node2)
const registry = new Map<UUID, any>([
[subgraph1.id, subgraph1],
[subgraph2.id, subgraph2]
])
const result = findUsedSubgraphIds(rootGraph, registry)
expect(result.size).toBe(2)
expect(result.has(subgraph1.id)).toBe(true)
expect(result.has(subgraph2.id)).toBe(true)
})
it('should handle circular references without infinite loop', () => {
const rootGraph = new LGraph()
const subgraph1 = createTestSubgraph({ name: 'Subgraph 1' })
const subgraph2 = createTestSubgraph({ name: 'Subgraph 2' })
// Add subgraph1 to root
const node1 = createTestSubgraphNode(subgraph1)
rootGraph.add(node1)
// Add subgraph2 to subgraph1
const node2 = createTestSubgraphNode(subgraph2)
subgraph1.add(node2)
// Add subgraph1 to subgraph2 (circular reference)
const node3 = createTestSubgraphNode(subgraph1, { id: 3 })
subgraph2.add(node3)
const registry = new Map<UUID, any>([
[subgraph1.id, subgraph1],
[subgraph2.id, subgraph2]
])
const result = findUsedSubgraphIds(rootGraph, registry)
expect(result.size).toBe(2)
expect(result.has(subgraph1.id)).toBe(true)
expect(result.has(subgraph2.id)).toBe(true)
})
it('should handle missing subgraphs in registry gracefully', () => {
const rootGraph = new LGraph()
const subgraph1 = createTestSubgraph({ name: 'Subgraph 1' })
const subgraph2 = createTestSubgraph({ name: 'Subgraph 2' })
// Add both subgraph nodes
const node1 = createTestSubgraphNode(subgraph1)
const node2 = createTestSubgraphNode(subgraph2)
rootGraph.add(node1)
rootGraph.add(node2)
// Only register subgraph1
const registry = new Map<UUID, any>([[subgraph1.id, subgraph1]])
const result = findUsedSubgraphIds(rootGraph, registry)
expect(result.size).toBe(2)
expect(result.has(subgraph1.id)).toBe(true)
expect(result.has(subgraph2.id)).toBe(true) // Still found, just can't recurse into it
})
})
})