2026-05-24 16:27:19 +00:00
|
|
|
import { describe, expect, test } from 'bun:test'
|
2026-05-20 18:54:16 +00:00
|
|
|
|
2026-06-06 08:48:33 +00:00
|
|
|
import { figmaSchema as figSchema } from '@open-pencil/kiwi/fig'
|
|
|
|
|
import {
|
|
|
|
|
expectEnumValue,
|
|
|
|
|
expectFieldNumber,
|
|
|
|
|
validateSchema
|
|
|
|
|
} from '@open-pencil/kiwi/schema-runtime'
|
2026-05-20 18:54:16 +00:00
|
|
|
|
|
|
|
|
describe('Kiwi schema runtime', () => {
|
|
|
|
|
test('validates the static Figma schema', () => {
|
|
|
|
|
validateSchema(figSchema)
|
|
|
|
|
})
|
|
|
|
|
|
2026-05-24 16:27:19 +00:00
|
|
|
test('keeps the bundled schema aligned with a modern embedded Figma schema', () => {
|
|
|
|
|
expect(figSchema.definitions).toHaveLength(605)
|
|
|
|
|
expect(figSchema.definitions.some((def) => def.name === 'NodeChange')).toBe(true)
|
|
|
|
|
expect(figSchema.definitions.some((def) => def.name === 'InteractiveSlideElementChange')).toBe(
|
|
|
|
|
true
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
|
2026-05-20 19:14:18 +00:00
|
|
|
test('keeps Figma clipboard-derived field numbers for emitted roundtrip fields', () => {
|
2026-05-20 18:54:16 +00:00
|
|
|
expectFieldNumber(figSchema, 'Paint', 'colorVar', 21)
|
|
|
|
|
expectFieldNumber(figSchema, 'TextLineData', 'sourceDirectionality', 9)
|
2026-05-20 19:22:43 +00:00
|
|
|
expectFieldNumber(figSchema, 'NodeChange', 'pageType', 397)
|
2026-05-20 19:52:05 +00:00
|
|
|
expectFieldNumber(figSchema, 'ComponentPropDef', 'varValue', 9)
|
2026-05-20 18:54:16 +00:00
|
|
|
|
|
|
|
|
expectEnumValue(figSchema, 'VariableField', 'TEXT_DATA', 11)
|
|
|
|
|
expectEnumValue(figSchema, 'VariableField', 'STACK_COUNTER_SPACING', 23)
|
|
|
|
|
expectEnumValue(figSchema, 'VariableField', 'OVERRIDDEN_SYMBOL_ID', 37)
|
2026-05-20 19:22:43 +00:00
|
|
|
expectEnumValue(figSchema, 'EditorType', 'DESIGN', 0)
|
|
|
|
|
expectEnumValue(figSchema, 'EditorType', 'SLIDES', 2)
|
2026-05-20 18:54:16 +00:00
|
|
|
})
|
2026-05-20 19:14:18 +00:00
|
|
|
|
2026-05-24 16:27:19 +00:00
|
|
|
test('keeps Figma-derived field numbers for layout and glyph fields', () => {
|
|
|
|
|
expectFieldNumber(figSchema, 'NodeChange', 'stackWrap', 323)
|
|
|
|
|
expectFieldNumber(figSchema, 'NodeChange', 'stackCounterSpacing', 324)
|
|
|
|
|
expectFieldNumber(figSchema, 'NodeChange', 'gridChildVerticalAlign', 476)
|
|
|
|
|
expectFieldNumber(figSchema, 'NodeChange', 'gridChildHorizontalAlign', 477)
|
|
|
|
|
expectFieldNumber(figSchema, 'Glyph', 'emojiCodePoints', 7)
|
|
|
|
|
expectFieldNumber(figSchema, 'Glyph', 'rotation', 9)
|
2026-05-20 19:14:18 +00:00
|
|
|
})
|
2026-05-20 18:54:16 +00:00
|
|
|
})
|