import assert from 'node:assert/strict';
import test from 'node:test';
import { boundedSubmissionReadyWaitMs, submissionRecovery } from '../src/submission-policy.js';

test('submission journal recovery never re-sends an ambiguous or submitted command', () => {
  assert.equal(submissionRecovery(undefined), 'safe-before-submit');
  assert.equal(submissionRecovery('starting'), 'safe-before-submit');
  assert.equal(submissionRecovery('tab-created'), 'safe-before-submit');
  assert.equal(submissionRecovery('submission-started'), 'ambiguous-no-resend');
  assert.equal(submissionRecovery('submitted'), 'submitted-no-resend');
  assert.equal(submissionRecovery('completed'), 'terminal');
  assert.equal(submissionRecovery('failed'), 'terminal');
});

test('submission readiness is bounded independently from a long command deadline', () => {
  const now = Date.parse('2026-08-21T02:00:00.000Z');
  assert.equal(boundedSubmissionReadyWaitMs('2026-08-21T02:10:00.000Z', now), 15_000);
  assert.equal(boundedSubmissionReadyWaitMs('2026-08-21T02:00:03.000Z', now), 3_000);
  assert.equal(boundedSubmissionReadyWaitMs('2026-08-21T01:59:59.000Z', now), 1);
  assert.equal(boundedSubmissionReadyWaitMs('not-a-date', now), 1);
});
