import { describe, it, expect } from 'vitest'
import {
  STATUS_COLORS,
  PRIORITY_COLORS,
  VERIFY_COLORS,
  JOB_STATUS_COLORS,
  SERIES_COLORS,
} from '@/lib/chart-colors'

describe('chart-colors', () => {
  it('STATUS_COLORS has all TaskStatus keys and non-empty values', () => {
    const keys: (keyof typeof STATUS_COLORS)[] = ['TO_DO', 'IN_PROGRESS', 'REVIEW', 'DONE']
    for (const key of keys) {
      expect(STATUS_COLORS[key]).toBeTruthy()
      expect(typeof STATUS_COLORS[key]).toBe('string')
    }
  })

  it('PRIORITY_COLORS has keys 1-4 with non-empty values', () => {
    const keys = [1, 2, 3, 4] as const
    for (const key of keys) {
      expect(PRIORITY_COLORS[key]).toBeTruthy()
      expect(typeof PRIORITY_COLORS[key]).toBe('string')
    }
  })

  it('VERIFY_COLORS has all VerifyResult keys and non-empty values', () => {
    const keys: (keyof typeof VERIFY_COLORS)[] = ['ALIGNED', 'PARTIAL', 'EMPTY', 'DIVERGENT']
    for (const key of keys) {
      expect(VERIFY_COLORS[key]).toBeTruthy()
      expect(typeof VERIFY_COLORS[key]).toBe('string')
    }
  })

  it('JOB_STATUS_COLORS has all ClaudeJobStatus keys and non-empty values', () => {
    const keys: (keyof typeof JOB_STATUS_COLORS)[] = [
      'queued', 'claimed', 'running', 'done', 'failed', 'cancelled', 'skipped',
    ]
    for (const key of keys) {
      expect(JOB_STATUS_COLORS[key]).toBeTruthy()
      expect(typeof JOB_STATUS_COLORS[key]).toBe('string')
    }
  })

  it('SERIES_COLORS has 5 non-empty entries', () => {
    expect(SERIES_COLORS).toHaveLength(5)
    for (const color of SERIES_COLORS) {
      expect(color).toBeTruthy()
      expect(typeof color).toBe('string')
    }
  })
})
