import ExcelJS from 'exceljs'
import path from 'path'

/**
 * Create test fixture Excel files for unit tests
 */

async function createTestFixture() {
  const workbook = new ExcelJS.Workbook()
  const worksheet = workbook.addWorksheet('Sheet1')

  // Row 1: Order title
  worksheet.addRow([null, '离散备料计划'])

  // Row 2-5: Order header info
  worksheet.addRow([null, '生产部门：', null, '生产车间', '产品编码：', null, 'P001'])
  worksheet.addRow([null, '生产订单：', null, 'SC202501001', '产品名称：', null, '测试产品A'])
  worksheet.addRow([null, '产品规格：', null, '标准规格', '计划数量：', null, '100'])
  worksheet.addRow([null, '单位：', null, '件', '需用日期：', null, '2025-02-15'])

  // Row 6: Empty row before table header
  worksheet.addRow([])

  // Row 7: Table header
  worksheet.addRow([
    null,
    '序号',
    '材料编码',
    '材料名称',
    '规格',
    '型号',
    '图号',
    '物料材质',
    '计划数量',
    '单位',
    '需用日期',
    '发料仓库',
    '单位用量',
    '累计出库数量'
  ])

  // Row 8-10: Material data
  worksheet.addRow([
    null,
    1,
    'M001',
    '钢材A',
    '规格1',
    '型号1',
    '图号1',
    '材质1',
    50,
    'kg',
    '2025-02-10',
    '仓库1',
    0.5,
    0
  ])
  worksheet.addRow([
    null,
    2,
    'M002',
    '塑料B',
    '规格2',
    '型号2',
    '图号2',
    '材质2',
    100,
    'kg',
    '2025-02-12',
    '仓库1',
    1.0,
    20
  ])
  worksheet.addRow([
    null,
    3,
    'M003',
    '配件C',
    '规格3',
    null,
    null,
    null,
    200,
    '件',
    '2025-02-14',
    '仓库2',
    2.0,
    50
  ])

  // Row 11: Footer info
  worksheet.addRow([null, '制单人：', null, '张三', '打印人：', null, '李四'])
  worksheet.addRow([null, '打印日期：', null, '2025-01-15'])

  // Save file
  const filePath = path.resolve(__dirname, 'test-export.xlsx')
  await workbook.xlsx.writeFile(filePath)
  console.log('Created test fixture:', filePath)
}

async function createEmptyOrdersFixture() {
  const workbook = new ExcelJS.Workbook()
  const worksheet = workbook.addWorksheet('Sheet1')

  // Row 1: Order title
  worksheet.addRow([null, '离散备料计划'])

  // Row 2-5: Order header info
  worksheet.addRow([null, '生产部门：', null, '生产车间', '产品编码：', null, 'P002'])
  worksheet.addRow([null, '生产订单：', null, 'SC202501002', '产品名称：', null, '测试产品B'])
  worksheet.addRow([null, '产品规格：', null, '特殊规格', '计划数量：', null, '50'])
  worksheet.addRow([null, '单位：', null, '套', '需用日期：', null, '2025-03-01'])

  // Row 6: Empty row before table header
  worksheet.addRow([])

  // Row 7: Table header
  worksheet.addRow([
    null,
    '序号',
    '材料编码',
    '材料名称',
    '规格',
    '型号',
    '图号',
    '物料材质',
    '计划数量',
    '单位',
    '需用日期',
    '发料仓库',
    '单位用量',
    '累计出库数量'
  ])

  // Row 8: Empty row (no data)
  worksheet.addRow([])

  // Row 9: Footer info
  worksheet.addRow([null, '制单人：', null, '王五', '打印人：', null, '赵六'])
  worksheet.addRow([null, '打印日期：', null, '2025-01-16'])

  // Save file
  const filePath = path.resolve(__dirname, 'test-empty-orders.xlsx')
  await workbook.xlsx.writeFile(filePath)
  console.log('Created empty orders fixture:', filePath)
}

async function main() {
  console.log('Creating test fixture Excel files...')
  await createTestFixture()
  await createEmptyOrdersFixture()
  console.log('Done!')
}

main().catch(console.error)
