Files
new-markdown/tests/window-claims.test.ts

37 lines
1.4 KiB
TypeScript

// 跨窗口草稿认领:别的窗口打开着的文档不该在本窗口再弹恢复提示;
// 窗口注销或认领过期后,草稿重新可被提示(真正的崩溃恢复不被吞)。
import { describe, it, expect, beforeEach } from 'vitest'
import { createWindowClaims, CLAIM_STALE_MS } from '../src/services/windowClaims'
describe('跨窗口文档认领', () => {
beforeEach(() => { localStorage.clear() })
it('其他窗口认领的文档键会被列出,本窗口自己的不算', () => {
const a = createWindowClaims('win-a')
const b = createWindowClaims('win-b')
a.update(['path:C:/docs/a.md'])
b.update(['path:C:/docs/b.md'])
expect([...b.liveClaimedKeys()]).toEqual(['path:C:/docs/a.md'])
expect([...a.liveClaimedKeys()]).toEqual(['path:C:/docs/b.md'])
})
it('窗口注销后其认领立即失效', () => {
const a = createWindowClaims('win-a')
const b = createWindowClaims('win-b')
a.update(['path:C:/docs/a.md'])
a.dispose()
expect(b.liveClaimedKeys().size).toBe(0)
})
it('认领过期(窗口崩溃未注销)后自动失效,不吞崩溃草稿', () => {
let t = 1_000_000
const now = () => t
const a = createWindowClaims('win-a', localStorage, now)
const b = createWindowClaims('win-b', localStorage, now)
a.update(['path:C:/docs/a.md'])
expect(b.liveClaimedKeys().size).toBe(1)
t += CLAIM_STALE_MS + 1
expect(b.liveClaimedKeys().size).toBe(0)
})
})