Files
superwork/vscode/src/webhook/eventOwnership.test.ts
T

61 lines
1.7 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { decideEventOwnership } from './eventOwnership'
describe('decideEventOwnership', () => {
it('assignee 是我 → own', () => {
expect(decideEventOwnership({
assignees: ['cruldra'],
me: 'cruldra',
hasLocalSessionEvidence: false,
})).toBe('own')
})
it('assignee 是别人 → observe,即使本机有终端(重新指派会转移责任)', () => {
expect(decideEventOwnership({
assignees: ['chehongwei'],
me: 'cruldra',
hasLocalSessionEvidence: true,
})).toBe('observe')
})
it('多 assignee 含我 → own', () => {
expect(decideEventOwnership({
assignees: ['chehongwei', 'cruldra'],
me: 'cruldra',
hasLocalSessionEvidence: false,
})).toBe('own')
})
it('有 assignee 但身份未知 → observe(无法证明归属时不动作)', () => {
expect(decideEventOwnership({
assignees: ['cruldra'],
me: undefined,
hasLocalSessionEvidence: true,
})).toBe('observe')
})
it('无 assignee(存量工单)+ 本机有实施/测试终端 → own', () => {
expect(decideEventOwnership({
assignees: [],
me: 'cruldra',
hasLocalSessionEvidence: true,
})).toBe('own')
})
it('无 assignee + 无本地证据 → observe', () => {
expect(decideEventOwnership({
assignees: [],
me: 'cruldra',
hasLocalSessionEvidence: false,
})).toBe('observe')
})
it('无 assignee 时本地证据不依赖身份(token 失效也能兜底)', () => {
expect(decideEventOwnership({
assignees: [],
me: undefined,
hasLocalSessionEvidence: true,
})).toBe('own')
})
})