import { expect, test } from 'bun:test'
import { captureDocumentOracle } from '#visual/capture/document'
import { SceneGraph } from '@open-pencil/scene-graph'
/** Two captures only line up if every node is addressed by page as well as position. */
test('each page keeps its own node paths under a page prefix', () => {
const graph = new SceneGraph()
const first = graph.getPages()[0]
graph.createNode('FRAME', first.id, { name: 'Only' })
const second = graph.addPage('Second')
const frame = graph.createNode('FRAME', second.id, { name: 'Outer' })
graph.createNode('TEXT', frame.id, { name: 'Inner', text: 'Hello' })
const nodes = captureDocumentOracle(graph, new Map())
const paths = nodes.map((node) => node.path.join(','))
expect(paths).toEqual(['0', '0,0', '1', '1,0', '1,0,0'])
expect(nodes.find((node) => node.path.join(',') === '1,0,0')?.text).toBe('Hello')
})
test('an unchanged document captures identically', () => {
graph.createNode('FRAME', graph.getPages()[0].id, { name: 'Frame' })
expect(captureDocumentOracle(graph, new Map())).toEqual(captureDocumentOracle(graph, new Map()))