← back to Dw Daily Catchup 20260909

test/readiness-repairs.test.js

22 lines

'use strict';
const test = require('node:test');
const assert = require('node:assert/strict');
const { buildRepairReport } = require('../lib/readiness-repairs');
const row = { shopify_id: 'gid://shopify/Product/1', dw_sku: 'DW-1', ts: '2026-09-09T15:25:00Z',
  action: 'skip-gate', reasons: ['missing sample variant', 'no-sample-variant', 'missing spec(s): width'] };
test('duplicate sample rules become one repair; retries are idempotent', () => {
  const report = buildRepairReport([row, row]);
  assert.equal(report.items.length, 2);
  assert.equal(report.counts['restore-sample-variant'], 1);
  assert.equal(report.products_needing_attention, 1);
  assert.ok(report.items.every(x => x.apply_authorized === false && x.created_at));
});
test('resolved latest result removes earlier failure', () => {
  assert.equal(buildRepairReport([row, { ...row, ts: '2026-09-09T16:25:00Z', action: 'activated' }]).items.length, 0);
});
test('provider error stays operational; prohibited design stays blocked', () => {
  const hold = { ...row, action: 'settlement-hold', reasons: [], settlement: { reason: 'vision-http-429' } };
  assert.equal(buildRepairReport([hold]).items[0].type, 'retry-image-review');
  assert.equal(buildRepairReport([{ ...hold, action: 'settlement-block' }]).items[0].type, 'settlement-block-review');
});