// tests/artifact-routing.test.ts
import { describe, it, expect } from 'vitest'
import { checkArtifact } from '../scripts/audit-artifact-routing.mjs'

const PRD = {
  name: 'PRD',
  defFile: 'docs/internal/design-process.md', defAnchor: 'Step B',
  routeFile: 'docs/internal/mockup-conventions.md', routeKeyword: '起草 / 更新 PRD',
  wakeFile: 'docs/WAKE-WORDS.md', wakeWord: '@TVU PRD',
}
describe('checkArtifact', () => {
  it('passes when def + route + wake all present', () => {
    const files = {
      'docs/internal/design-process.md': '### Step B — PRD 起草',
      'docs/internal/mockup-conventions.md': '| Step B | 起草 / 更新 PRD 时 |',
      'docs/WAKE-WORDS.md': '| 起草/更新 PRD | @TVU PRD | ... |',
    }
    const r = checkArtifact(PRD, files)
    expect(r.ok).toBe(true); expect(r.missing).toHaveLength(0)
  })
  it('fails when wake word missing (the historical PRD gap)', () => {
    const files = {
      'docs/internal/design-process.md': '### Step B — PRD 起草',
      'docs/internal/mockup-conventions.md': '| Step B | 起草 / 更新 PRD 时 |',
      'docs/WAKE-WORDS.md': '（没有 PRD 唤醒词）',
    }
    const r = checkArtifact(PRD, files)
    expect(r.ok).toBe(false); expect(r.missing).toContain('wake')
  })
  it('fails when route keyword missing', () => {
    const files = {
      'docs/internal/design-process.md': '### Step B — PRD 起草',
      'docs/internal/mockup-conventions.md': '（没有 PRD 路由行）',
      'docs/WAKE-WORDS.md': '@TVU PRD',
    }
    const r = checkArtifact(PRD, files)
    expect(r.ok).toBe(false); expect(r.missing).toContain('route')
  })
})
