- Replace low-count E2E non-null assertions with store guards and optional expectations - Use expectDefined for tool adapter and XPath node lookups - Validate affected engine and E2E tests
83 lines
2.2 KiB
TypeScript
83 lines
2.2 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
|
|
import { expectDefined } from '#tests/helpers/assert'
|
|
import { getTool, setupToolTest, type ToolResult } from '#tests/helpers/tools'
|
|
|
|
describe('delete_node', () => {
|
|
test('removes a node', () => {
|
|
const { figma } = setupToolTest()
|
|
const rect = figma.createRectangle()
|
|
|
|
const tool = getTool('delete_node')
|
|
tool.execute(figma, { id: rect.id })
|
|
|
|
expect(figma.getNodeById(rect.id)).toBeNull()
|
|
})
|
|
})
|
|
|
|
describe('clone_node', () => {
|
|
test('duplicates a node', () => {
|
|
const { figma } = setupToolTest()
|
|
const rect = figma.createRectangle()
|
|
rect.name = 'Original'
|
|
rect.resize(100, 100)
|
|
|
|
const tool = getTool('clone_node')
|
|
const result = tool.execute(figma, { id: rect.id }) as ToolResult
|
|
|
|
expect(result.id).not.toBe(rect.id)
|
|
expect(result.name).toBe('Original')
|
|
})
|
|
})
|
|
|
|
describe('rename_node', () => {
|
|
test('renames a node', () => {
|
|
const { figma } = setupToolTest()
|
|
const rect = figma.createRectangle()
|
|
|
|
const tool = getTool('rename_node')
|
|
tool.execute(figma, { id: rect.id, name: 'My Rectangle' })
|
|
|
|
expect(expectDefined(figma.getNodeById(rect.id), 'renamed rectangle').name).toBe('My Rectangle')
|
|
})
|
|
})
|
|
|
|
describe('reparent_node', () => {
|
|
test('moves node into frame', () => {
|
|
const { figma } = setupToolTest()
|
|
const frame = figma.createFrame()
|
|
frame.resize(300, 300)
|
|
const rect = figma.createRectangle()
|
|
rect.resize(50, 50)
|
|
|
|
const tool = getTool('reparent_node')
|
|
tool.execute(figma, { id: rect.id, parent_id: frame.id })
|
|
|
|
expect(
|
|
expectDefined(figma.getNodeById(frame.id), 'target frame').children.some(
|
|
(c) => c.id === rect.id
|
|
)
|
|
).toBe(true)
|
|
})
|
|
})
|
|
|
|
describe('group_nodes', () => {
|
|
test('groups two nodes', () => {
|
|
const { figma } = setupToolTest()
|
|
const r1 = figma.createRectangle()
|
|
r1.resize(50, 50)
|
|
const r2 = figma.createRectangle()
|
|
r2.resize(50, 50)
|
|
|
|
const tool = getTool('group_nodes')
|
|
const result = tool.execute(figma, { ids: [r1.id, r2.id] }) as ToolResult
|
|
|
|
expect(result.type).toBe('GROUP')
|
|
const group = expectDefined(
|
|
figma.getNodeById(expectDefined(result.id, 'group id')),
|
|
'created group'
|
|
)
|
|
expect(group.children.length).toBe(2)
|
|
})
|
|
})
|