openpencil/tests/engine/tools/structure.test.ts
Danila Poyarkov 6ec18f1dfb chore(tests): remove targeted non-null assertions
- 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
2026-05-06 03:13:58 +03:00

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)
})
})