test(state): cover restored free-window id allocation
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
// @vitest-environment jsdom
|
||||
import { beforeEach, describe, expect, it } from 'vitest'
|
||||
import { createSidebarStore, floatTab } from '../src/client/state.ts'
|
||||
|
||||
beforeEach(() => {
|
||||
localStorage.clear()
|
||||
})
|
||||
|
||||
describe('restored free-window ids', () => {
|
||||
it('seeds the shared uid counter past persisted float ids before minting another window', () => {
|
||||
localStorage.setItem('dsh-sidebar:v1:s1', JSON.stringify({
|
||||
panelOpen: true,
|
||||
width: 400,
|
||||
activePane: 'pane:1',
|
||||
nextTerminal: 1,
|
||||
nextBrowser: 1,
|
||||
expanded: [],
|
||||
splits: {
|
||||
kind: 'leaf',
|
||||
id: 'pane:1',
|
||||
active: 'tab:2',
|
||||
tabs: [{ id: 'tab:2', type: 'browser', title: 'Docked' }],
|
||||
},
|
||||
bottomOpen: false,
|
||||
bottomHeight: 220,
|
||||
bottomOpenedOnce: false,
|
||||
bottomSplits: {
|
||||
kind: 'leaf',
|
||||
id: 'pane:3',
|
||||
active: null,
|
||||
tabs: [],
|
||||
},
|
||||
floats: [{
|
||||
id: 'float:5',
|
||||
tab: { id: 'tab:4', type: 'browser', title: 'Existing float' },
|
||||
x: 0,
|
||||
y: 0,
|
||||
w: 390,
|
||||
h: 500,
|
||||
}],
|
||||
}))
|
||||
|
||||
const store = createSidebarStore()
|
||||
store.setSession('s1')
|
||||
store.reduce(state => floatTab(state, 'tab:2', 400, 300))
|
||||
|
||||
const ids = store.getSnapshot().state!.floats.map(float => float.id)
|
||||
expect(ids).toEqual(['float:5', 'float:6'])
|
||||
expect(new Set(ids).size).toBe(ids.length)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user