import { describe, expect, it } from 'vitest'
import { parseKanbanSnapshot, snapshotScriptTag, snapshotToScriptJson } from './kanbanSnapshot'
const sample = {
issues: [{ id: 'o/r#1', number: 1, title: '
', column: 'todo' as const, assignees: [], htmlUrl: 'https://x' }],
scope: 'mine' as const,
me: 'cruldra',
globalAutoReview: true,
youtrackConfigured: false,
}
describe('kanbanSnapshot', () => {
it('往返:注入 JSON 不含原始 ,parse 还原标题', () => {
const json = snapshotToScriptJson(sample)
expect(json).not.toContain('')
expect(json).toContain('\\u003c')
const parsed = parseKanbanSnapshot(JSON.parse(json))
expect(parsed?.issues[0].title).toBe('
')
expect(parsed?.scope).toBe('mine')
})
it('script 标签带 nonce 和 id', () => {
const tag = snapshotScriptTag('abc', sample)
expect(tag).toContain('id="kanban-snapshot"')
expect(tag).toContain('nonce="abc"')
expect(tag).toContain('type="application/json"')
expect(tag).not.toContain('
')
})
it('垃圾数据返回 null', () => {
expect(parseKanbanSnapshot(null)).toBeNull()
expect(parseKanbanSnapshot({ scope: 'mine' })).toBeNull()
})
})