import { describe, expect, it } from 'vitest'
import { CI_REPO_DEFERRED_SUMMARY, CI_REPO_GAP_SUMMARY, CI_REPO_SUMMARY } from './fixtures/ci-trains'
import { resolveCiRepoGaps, resolvePrQueueRepoGap, resolveTrainRepoGap } from './ci-coverage'

describe('ci-coverage', () => {
  it('suppresses operator warnings for poll-budget rotation', () => {
    expect(resolveCiRepoGaps(CI_REPO_DEFERRED_SUMMARY)).toEqual([])
    expect(resolveTrainRepoGap(CI_REPO_DEFERRED_SUMMARY)).toBeNull()
    expect(resolvePrQueueRepoGap(CI_REPO_DEFERRED_SUMMARY)).toBeNull()
  })

  it('does not surface run-history coverage gaps', () => {
    const truncated = resolveCiRepoGaps({
      ...CI_REPO_SUMMARY,
      historyComplete: false,
      degraded: ['pagination'],
    })
    expect(truncated.some((gap) => gap.headline.includes('Run history'))).toBe(false)

    const unavailable = resolveCiRepoGaps({
      ...CI_REPO_SUMMARY,
      historyComplete: false,
      degraded: [],
    })
    expect(unavailable.some((gap) => gap.headline.includes('Run history'))).toBe(false)
  })

  it('prioritizes train ref gaps before PR gaps', () => {
    const gap = resolveTrainRepoGap({
      ...CI_REPO_GAP_SUMMARY,
      pollDeferred: false,
    })
    expect(gap?.headline).toBe('Train branch list truncated')
  })
})
