openpencil/tests/engine/io/fig/import/legacy/component/sets.test.ts
2026-05-16 11:59:02 +03:00

47 lines
1.6 KiB
TypeScript

import { describe, expect, test } from 'bun:test'
import { importNodeChanges } from '@open-pencil/core'
import { canvas, doc, node } from '../helpers'
describe('fig-import: component set detection', () => {
test('FRAME with VARIANT componentPropDefs becomes COMPONENT_SET', () => {
const changes: NodeChange[] = [
doc(),
canvas(),
{
...node('FRAME', 10, 1),
name: 'Button',
componentPropDefs: [{ id: { sessionID: 0, localID: 1 }, name: 'State', type: 'VARIANT' }]
} as NodeChange,
{
...node('SYMBOL', 11, 1),
parentIndex: { guid: { sessionID: 1, localID: 10 }, position: '!' },
name: 'State=Default'
} as NodeChange,
{
...node('SYMBOL', 12, 1),
parentIndex: { guid: { sessionID: 1, localID: 10 }, position: '"' },
name: 'State=Hover'
} as NodeChange
]
const graph = importNodeChanges(changes, [])
const page = graph.getPages()[0]
const set = graph.getChildren(page.id)[0]
expect(set.type).toBe('COMPONENT_SET')
expect(set.name).toBe('Button')
const children = graph.getChildren(set.id)
expect(children).toHaveLength(2)
expect(children[0].type).toBe('COMPONENT')
expect(children[1].type).toBe('COMPONENT')
})
test('FRAME without componentPropDefs stays FRAME', () => {
const changes: NodeChange[] = [doc(), canvas(), node('FRAME', 10, 1, { name: 'Regular Frame' })]
const graph = importNodeChanges(changes, [])
const page = graph.getPages()[0]
const frame = graph.getChildren(page.id)[0]
expect(frame.type).toBe('FRAME')
})
})