- Move FigmaAPI tests into focused files by feature area - Share API construction from figma/api/helpers.ts - Remove FigmaAPI coverage from max-lines exceptions
74 lines
2.2 KiB
TypeScript
74 lines
2.2 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
|
|
import { expectDefined } from '#tests/helpers/assert'
|
|
|
|
import { createAPI } from './helpers'
|
|
|
|
describe('traversal', () => {
|
|
test('findAll finds deep descendants', () => {
|
|
const api = createAPI()
|
|
const parent = api.createFrame()
|
|
parent.name = 'Container'
|
|
const child = api.createFrame()
|
|
child.name = 'Card'
|
|
parent.appendChild(child)
|
|
const text = api.createText()
|
|
text.characters = 'Title'
|
|
text.name = 'Title'
|
|
child.appendChild(text)
|
|
|
|
const found = parent.findAll((n) => n.type === 'TEXT')
|
|
expect(found.length).toBe(1)
|
|
expect(found[0].characters).toBe('Title')
|
|
})
|
|
|
|
test('findAll without callback returns all', () => {
|
|
const api = createAPI()
|
|
const parent = api.createFrame()
|
|
const a = api.createRectangle()
|
|
const b = api.createText()
|
|
parent.appendChild(a)
|
|
parent.appendChild(b)
|
|
expect(parent.findAll().length).toBe(2)
|
|
})
|
|
|
|
test('findOne returns first match', () => {
|
|
const api = createAPI()
|
|
const parent = api.createFrame()
|
|
const a = api.createRectangle()
|
|
a.name = 'First'
|
|
const b = api.createRectangle()
|
|
b.name = 'Second'
|
|
parent.appendChild(a)
|
|
parent.appendChild(b)
|
|
const found = parent.findOne((n) => n.type === 'RECTANGLE')
|
|
expect(expectDefined(found, 'first rectangle').name).toBe('First')
|
|
})
|
|
|
|
test('findChild searches direct children only', () => {
|
|
const api = createAPI()
|
|
const parent = api.createFrame()
|
|
const child = api.createFrame()
|
|
const deep = api.createText()
|
|
deep.name = 'Deep'
|
|
parent.appendChild(child)
|
|
child.appendChild(deep)
|
|
|
|
expect(parent.findChild((n) => n.name === 'Deep')).toBeNull()
|
|
expect(child.findChild((n) => n.name === 'Deep')).not.toBeNull()
|
|
})
|
|
|
|
test('findChildren returns direct children matching', () => {
|
|
const api = createAPI()
|
|
const parent = api.createFrame()
|
|
const a = api.createRectangle()
|
|
const b = api.createText()
|
|
const c = api.createRectangle()
|
|
parent.appendChild(a)
|
|
parent.appendChild(b)
|
|
parent.appendChild(c)
|
|
const rects = parent.findChildren((n) => n.type === 'RECTANGLE')
|
|
expect(rects.length).toBe(2)
|
|
})
|
|
})
|