- 抽取站点地址与 Token 的 24 小时缓存工具 - 存储页与多选同步弹窗共用 pichost.site-sync-form - 弹窗打开时读取最新缓存,修改后写回 - 增加缓存读取与过期测试
51 lines
1.3 KiB
TypeScript
51 lines
1.3 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from 'vitest'
|
|
import {
|
|
loadSiteSyncForm,
|
|
saveSiteSyncForm,
|
|
SITE_SYNC_FORM_STORAGE_KEY
|
|
} from './site-sync-form'
|
|
|
|
function createStorage(): Storage {
|
|
const values = new Map<string, string>()
|
|
return {
|
|
get length() {
|
|
return values.size
|
|
},
|
|
clear: () => values.clear(),
|
|
getItem: key => values.get(key) ?? null,
|
|
key: index => [...values.keys()][index] ?? null,
|
|
removeItem: key => values.delete(key),
|
|
setItem: (key, value) => values.set(key, value)
|
|
}
|
|
}
|
|
|
|
describe('site sync form cache', () => {
|
|
afterEach(() => {
|
|
vi.useRealTimers()
|
|
vi.unstubAllGlobals()
|
|
})
|
|
|
|
it('reads values saved by another component', () => {
|
|
vi.stubGlobal('localStorage', createStorage())
|
|
saveSiteSyncForm('http://127.0.0.1:3010', 'secret-token')
|
|
|
|
expect(loadSiteSyncForm()).toEqual({
|
|
targetBaseUrl: 'http://127.0.0.1:3010',
|
|
token: 'secret-token'
|
|
})
|
|
})
|
|
|
|
it('drops the cache after 24 hours', () => {
|
|
const storage = createStorage()
|
|
vi.stubGlobal('localStorage', storage)
|
|
vi.useFakeTimers()
|
|
vi.setSystemTime(new Date('2026-10-19T00:00:00Z'))
|
|
saveSiteSyncForm('http://target', 'token')
|
|
|
|
vi.setSystemTime(new Date('2026-10-20T00:00:01Z'))
|
|
|
|
expect(loadSiteSyncForm()).toBeNull()
|
|
expect(storage.getItem(SITE_SYNC_FORM_STORAGE_KEY)).toBeNull()
|
|
})
|
|
})
|