47 lines
1.6 KiB
TypeScript
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')
|
|
})
|
|
})
|