94 lines
3.2 KiB
JavaScript
94 lines
3.2 KiB
JavaScript
const { test } = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const { reconcile } = require('./investmoz-v2-source-reconciliation.cjs');
|
|
void test('validated official source and record survive missing citation fields', () => {
|
|
const result = reconcile(
|
|
{
|
|
kind: 'investment_zones',
|
|
record: {
|
|
id: 'z',
|
|
validation_status: 'validated',
|
|
legal_source_id: 'l',
|
|
},
|
|
},
|
|
{
|
|
dossiers: [],
|
|
legal_sources: [
|
|
{
|
|
id: 'l',
|
|
validation_status: 'validated',
|
|
diploma: 'QA official fixture',
|
|
},
|
|
],
|
|
},
|
|
);
|
|
assert.equal(result.existing_record_validation, 'validated');
|
|
assert.equal(result.existing_legal_validation, 'validated');
|
|
assert.equal(result.validation_revoked, false);
|
|
assert.equal(result.traceability, 'official_reference_identified');
|
|
});
|
|
void test('missing source field is a traceability gap, not rejection', () => {
|
|
const result = reconcile(
|
|
{
|
|
kind: 'projects',
|
|
record: {
|
|
id: 'p',
|
|
metadata: JSON.stringify({
|
|
documented_location_sources: {
|
|
'x:primary': {
|
|
source_quote: 'QA quotation',
|
|
source_reference: 'QA dossier',
|
|
applied_at: '2026-10-07',
|
|
},
|
|
},
|
|
}),
|
|
},
|
|
},
|
|
{ dossiers: [], legal_sources: [] },
|
|
);
|
|
assert.equal(
|
|
result.traceability,
|
|
'documentary_bridge_to_official_source_to_recover',
|
|
);
|
|
assert.equal(result.documentary_relations[0].source_quote, 'QA quotation');
|
|
assert.equal(result.validation_revoked, false);
|
|
assert.equal(result.calculation_activated, false);
|
|
});
|
|
void test('promoter cannot become official through validated record', () => {
|
|
const result = reconcile(
|
|
{
|
|
kind: 'investment_zones',
|
|
record: {
|
|
id: 'z',
|
|
validation_status: 'validated',
|
|
source_evidence: JSON.stringify([
|
|
{ source_type: 'promoter', title: 'QA promoter' },
|
|
]),
|
|
},
|
|
},
|
|
{ dossiers: [], legal_sources: [] },
|
|
);
|
|
assert.equal(result.existing_record_validation, 'validated');
|
|
assert.equal(result.official_references.length, 0);
|
|
assert.equal(result.official_validation_newly_granted, false);
|
|
});
|
|
void test('existing legal pending is preserved without invalidating consultation', () => {
|
|
const result = reconcile(
|
|
{
|
|
kind: 'investment_zones',
|
|
record: {
|
|
id: 'z',
|
|
validation_status: 'validated',
|
|
legal_source_id: 'l',
|
|
},
|
|
},
|
|
{
|
|
dossiers: [],
|
|
legal_sources: [{ id: 'l', validation_status: 'pending' }],
|
|
},
|
|
);
|
|
assert.equal(result.existing_record_validation, 'validated');
|
|
assert.equal(result.existing_legal_validation, 'pending');
|
|
assert.equal(result.validation_revoked, false);
|
|
});
|