import type { Issue } from '../gitea/types' import { describe, expect, it } from 'vitest' import { evaluateLockedReason } from './issueLock' function issue(number: number, column: Issue['column'], prerequisite?: number): Issue { return { number, title: `#${number}`, column, prerequisite } as Issue } describe('evaluateLockedReason', () => { it('没有前置 → 放行', () => { expect(evaluateLockedReason([issue(1, 'todo')], 1)).toEqual({ locked: false }) }) it('前置未完成 → 锁定并带上前置号和所在列', () => { const issues = [issue(2, 'todo', 1), issue(1, 'in-progress')] expect(evaluateLockedReason(issues, 2)).toEqual({ locked: true, prerequisiteNumber: 1, prerequisiteColumn: 'in-progress', }) }) it('前置已完成 → 放行', () => { const issues = [issue(2, 'todo', 1), issue(1, 'done')] expect(evaluateLockedReason(issues, 2)).toEqual({ locked: false }) }) it('快照里没有前置工单 → 放行(不误锁)', () => { expect(evaluateLockedReason([issue(2, 'todo', 99)], 2)).toEqual({ locked: false }) }) it('快照里没有这张工单 → 放行', () => { expect(evaluateLockedReason([issue(1, 'todo')], 7)).toEqual({ locked: false }) }) })