import { describe, it, expect } from 'vitest'
import { computeOeeTrend, type OeeDatum } from '@/lib/lsc-workshop/oee-trend'

describe('computeOeeTrend', () => {
  it('returns empty array when no data', () => {
    expect(computeOeeTrend([])).toEqual([])
  })

  it('orders points chronologically', () => {
    const data: OeeDatum[] = [
      { date: '2026-05-18', actual_oee: 0.7 },
      { date: '2026-05-15', actual_oee: 0.5 },
      { date: '2026-05-17', actual_oee: 0.6 },
    ]
    const result = computeOeeTrend(data)
    expect(result.map((r) => r.date)).toEqual(['2026-05-15', '2026-05-17', '2026-05-18'])
  })

  it('converts decimal OEE to percent (0-100)', () => {
    const data: OeeDatum[] = [
      { date: '2026-05-15', actual_oee: 0.5 },
    ]
    const result = computeOeeTrend(data)
    expect(result[0].oee_pct).toBe(50)
  })

  it('filters out null oee values', () => {
    const data: OeeDatum[] = [
      { date: '2026-05-15', actual_oee: 0.5 },
      { date: '2026-05-16', actual_oee: null },
      { date: '2026-05-17', actual_oee: 0.7 },
    ]
    const result = computeOeeTrend(data)
    expect(result).toHaveLength(2)
    expect(result.map((r) => r.date)).toEqual(['2026-05-15', '2026-05-17'])
  })

  it('rounds percent to 1 decimal', () => {
    const data: OeeDatum[] = [
      { date: '2026-05-15', actual_oee: 0.5678 },
    ]
    const result = computeOeeTrend(data)
    expect(result[0].oee_pct).toBe(56.8)
  })
})
