test: cover Pascal scene rebuild state

This commit is contained in:
134 2026-07-13 11:05:52 +08:00
parent f832e08293
commit 7ccbc87afd

View File

@ -74,4 +74,39 @@ describe('dirty tracking', () => {
expect(useScene.getState().nodes[TRACKED]).toBeUndefined()
expect(useScene.getState().dirtyNodes.has(TRACKED)).toBe(false)
})
test('setScene publishes tracked nodes in the initial dirty snapshot', () => {
useScene.getState().setScene(
{
[UNTRACKED]: makeNode(UNTRACKED, 'test-untracked'),
[TRACKED]: makeNode(TRACKED, 'test-tracked'),
[UNREGISTERED]: makeNode(UNREGISTERED, 'unregistered-kind'),
},
[UNTRACKED, TRACKED, UNREGISTERED],
)
const dirtyNodes = useScene.getState().dirtyNodes
expect(dirtyNodes.has(UNTRACKED)).toBe(false)
expect(dirtyNodes.has(TRACKED)).toBe(true)
expect(dirtyNodes.has(UNREGISTERED)).toBe(true)
})
test('loadScene creates a complete site-building-level parent chain', () => {
useScene.setState({ nodes: {}, rootNodeIds: [], dirtyNodes: new Set() } as never)
useScene.getState().loadScene()
const state = useScene.getState()
const site = state.nodes[state.rootNodeIds[0]!]
expect(site?.type).toBe('site')
if (site?.type !== 'site') throw new Error('default site was not created')
const building = state.nodes[site.children[0]! as AnyNodeId]
expect(building?.type).toBe('building')
expect(building?.parentId).toBe(site.id)
if (building?.type !== 'building') throw new Error('default building was not created')
const level = state.nodes[building.children[0]! as AnyNodeId]
expect(level?.type).toBe('level')
expect(level?.parentId).toBe(building.id)
})
})