import { describe, expect, it } from 'vitest';
import { mapPieceStatusToMetric } from './piece-metric-status.js';

/**
 * executeJob（旧: インライン switch）から切り出したメトリクス status 変換の
 * ピン留め。src/worker.metrics.test.ts が executeJob の switch をミラーして
 * いたのと同じ対応表を、切り出し後の純関数に対して固定する。
 */
describe('mapPieceStatusToMetric', () => {
  it.each([
    ['completed', 'succeeded'],
    ['aborted', 'aborted'],
    ['cancelled', 'cancelled'],
    ['waiting_human', 'waiting_human'],
    // waiting_subtasks はクリーンな停車であり失敗ではないため succeeded に寄せる
    ['waiting_subtasks', 'succeeded'],
    ['error', 'failed'],
  ] as const)('maps %s -> %s', (input, expected) => {
    expect(mapPieceStatusToMetric(input)).toBe(expected);
  });
});
