- Move clipboard node import tests into focused files by behavior - Preserve filtering, hierarchy, styling, component, and undo coverage - Remove import-nodes from max-lines exceptions
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'bun:test'
|
|
|
|
import { importClipboardNodes } from '@open-pencil/core'
|
|
import type { NodeChange } from '@open-pencil/core'
|
|
|
|
import { getNodeOrThrow } from '#tests/helpers/assert'
|
|
import { createClipboardGraph } from '#tests/helpers/clipboard'
|
|
|
|
describe('importClipboardNodes: styling', () => {
|
|
it('preserves fills and strokes', () => {
|
|
const { graph, pageId } = createClipboardGraph()
|
|
|
|
const nodeChanges = [
|
|
{ guid: { sessionID: 0, localID: 0 }, type: 'DOCUMENT', name: 'Doc' },
|
|
{
|
|
guid: { sessionID: 0, localID: 1 },
|
|
parentIndex: { guid: { sessionID: 0, localID: 0 }, position: '!' },
|
|
type: 'CANVAS',
|
|
name: 'Page'
|
|
},
|
|
{
|
|
guid: { sessionID: 0, localID: 10 },
|
|
parentIndex: { guid: { sessionID: 0, localID: 1 }, position: '!' },
|
|
type: 'RECTANGLE',
|
|
name: 'Colored',
|
|
size: { x: 100, y: 100 },
|
|
transform: { m00: 1, m01: 0, m02: 0, m10: 0, m11: 1, m12: 0 },
|
|
fillPaints: [
|
|
{ type: 'SOLID', color: { r: 1, g: 0, b: 0, a: 1 }, opacity: 1, visible: true }
|
|
],
|
|
strokePaints: [
|
|
{ type: 'SOLID', color: { r: 0, g: 0, b: 1, a: 1 }, opacity: 1, visible: true }
|
|
],
|
|
strokeWeight: 2
|
|
}
|
|
] as NodeChange[]
|
|
|
|
const created = importClipboardNodes(nodeChanges, graph, pageId)
|
|
const node = getNodeOrThrow(graph, created[0])
|
|
expect(node.fills).toHaveLength(1)
|
|
expect(node.fills[0].color.r).toBe(1)
|
|
expect(node.strokes).toHaveLength(1)
|
|
expect(node.strokes[0].color.b).toBe(1)
|
|
expect(node.strokes[0].weight).toBe(2)
|
|
})
|
|
})
|