37 lines
1.4 KiB
TypeScript
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)
|
|
})
|
|
})
|