// Loop 12 PR 2: der Adapter ist reine Wiedergabe — Zahlen wörtlich,
// Kennungen in jeder Zeile, nichts verschwindet still.
import { describe, it, expect } from 'vitest'
import { presentationPackageToExportConfig } from '../qaf-presentation-adapter'

const slides = [
  {
    slide_id: 'slide-overview',
    title_de: 'Überblick',
    kind: 'overview',
    content: { difference_count: 3, finding_count: 1, action_count: 0 },
  },
  {
    slide_id: 'slide-top-differences',
    title_de: 'Größte Differenzen (Top 2)',
    kind: 'top_differences',
    content: {
      rows: [
        { difference_id: 'D-SUM-001', metric_id: 'summary.quotationPrice', difference_status: 'changed', delta_absolute: '12.96', unit: 'EUR_per_piece' },
        { difference_id: 'D-MFG-002', metric_id: 'mfg:row:5', difference_status: 'new' },
      ],
    },
  },
]

describe('presentationPackageToExportConfig', () => {
  it('carries canonical decimal strings verbatim and puts the reference ID first in every row', () => {
    const cfg = presentationPackageToExportConfig(slides, { titleDe: 'QAF-Vergleich', fileName: 'test.pptx' })
    const top = cfg.sections[1]
    expect(top.table!.headers[0]).toBe('Kennung')
    expect(top.table!.rows[0][0]).toBe('D-SUM-001')
    expect(top.table!.rows[0][3]).toBe('12.96')
  })

  it('missing optional values render as em dash, never as fabricated numbers', () => {
    const cfg = presentationPackageToExportConfig(slides, { titleDe: 'x', fileName: 'x.pptx' })
    expect(cfg.sections[1].table!.rows[1][3]).toBe('—')
  })

  it('unknown slide kinds surface as an honest text note instead of vanishing', () => {
    const cfg = presentationPackageToExportConfig(
      [{ slide_id: 's', title_de: 'Neu', kind: 'zukunft', content: {} }],
      { titleDe: 'x', fileName: 'x.pptx' },
    )
    expect(cfg.sections[0].text).toContain('zukunft')
  })

  it('is deterministic for identical input', () => {
    const a = JSON.stringify(presentationPackageToExportConfig(slides, { titleDe: 't', fileName: 'f.pptx' }))
    const b = JSON.stringify(presentationPackageToExportConfig(slides, { titleDe: 't', fileName: 'f.pptx' }))
    expect(a).toBe(b)
  })
})
