24 lines
1.3 KiB
JavaScript
24 lines
1.3 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {
|
|
opportunityDescription,
|
|
recordedVerificationDate,
|
|
} from '../../resources/js/lib/opportunity-information.ts';
|
|
|
|
test('metadata uses the actual summary, normalises markup and never invents investment terms', () => {
|
|
assert.equal(opportunityDescription({ title: 'Projecto', summary: '<b>Resumo</b>\n declarado' }), 'Resumo declarado');
|
|
const fallback = opportunityDescription({ title: 'Avicultura', summary: null });
|
|
assert.match(fallback, /Avicultura/);
|
|
assert.match(opportunityDescription({ title: 'Projecto', summary: '<b> </b>' }), /Projecto/);
|
|
assert.doesNotMatch(fallback, /A negociar|USD|aprovad|benefício/i);
|
|
assert.equal(Array.from(opportunityDescription({ title: 'Projecto', summary: 'a'.repeat(300) })).length, 160);
|
|
});
|
|
|
|
test('unknown and invalid verification dates remain distinct from a recorded verification', () => {
|
|
assert.equal(recordedVerificationDate(null), 'Não registada');
|
|
assert.equal(recordedVerificationDate('invalid'), 'Data não interpretável');
|
|
assert.equal(recordedVerificationDate('2026-02-30T12:00:00Z'), 'Data não interpretável');
|
|
assert.equal(recordedVerificationDate('2026-11-10 12:00:00'), 'Fuso horário não registado');
|
|
assert.match(recordedVerificationDate('2026-11-10T12:00:00Z'), /2026/);
|
|
});
|