137086109c
Stands up the shared browser-helpers package (consumed by public/vendor/admin via the Gitea npm registry) to de-duplicate copy-pasted frontend code: - format.js: formatLabel/formatStatus/formatTimeline/formatBudget (single source of truth — these had drifted, see SEV-310). - markdown.js: renderMarkdown (marked + strict DOMPurify; both peer deps). - wait-image.js: waitForImage (was byte-identical in public + vendor). ESM source package (no build step — Vite consumers import directly). publishConfig points at the Gitea npm registry. node --test green (formatters). Next: publish v0.1.0, then migrate each site to consume it and delete the copies. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 lines
1009 B
JavaScript
27 lines
1009 B
JavaScript
import { test } from 'node:test';
|
||
import assert from 'node:assert/strict';
|
||
import { formatLabel, formatStatus, formatTimeline, formatBudget } from './format.js';
|
||
|
||
test('formatLabel replaces _ and - and title-cases', () => {
|
||
assert.equal(formatLabel('contract_pending'), 'Contract Pending');
|
||
assert.equal(formatLabel('in-progress'), 'In Progress');
|
||
assert.equal(formatLabel(''), '');
|
||
assert.equal(formatLabel(null), '');
|
||
});
|
||
|
||
test('formatStatus is formatLabel', () => {
|
||
assert.equal(formatStatus('matched'), 'Matched');
|
||
});
|
||
|
||
test('formatTimeline maps known slugs, falls back otherwise', () => {
|
||
assert.equal(formatTimeline('6_to_12_months'), '6–12 months');
|
||
assert.equal(formatTimeline('flexible'), 'Flexible');
|
||
assert.equal(formatTimeline('something_else'), 'Something Else');
|
||
});
|
||
|
||
test('formatBudget maps known ranges', () => {
|
||
assert.equal(formatBudget('25k-50k'), '$25,000 – $50,000');
|
||
assert.equal(formatBudget('100k-plus'), '$100,000+');
|
||
assert.equal(formatBudget(''), '');
|
||
});
|