test: cover Pascal scene rebuild state
This commit is contained in:
parent
f832e08293
commit
7ccbc87afd
@ -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)
|
||||
})
|
||||
})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user