tinylink/core/rawPipeline.test.js
mahdahar 10f8dbbb83 refactor: consolidate core runtime and docs
Move middleware sources into core/, refresh config paths, and update design/user docs to reflect the raw payload pipeline.
2026-04-07 11:30:11 +07:00

66 lines
2.1 KiB
JavaScript

const assert = require('node:assert');
const fs = require('fs');
const os = require('os');
const path = require('path');
const translator = require('./pipeline/translator');
const { normalize } = require('./pipeline/normalizer');
function run() {
const entry = {
instrument_id: 'inst1',
config: { location: 'default-lab' },
translator: {
engine: 'overrides',
forceInstrumentId: true,
meta: { direction: 'mono' }
}
};
const rawPayload = '<STX>ABC|123<ETX>';
const canonicalSeed = {
instrument_id: entry.instrument_id,
sample_id: 'raw-1',
result_time: new Date().toISOString(),
results: [{ test_code: 'RAW', value: rawPayload }],
meta: { raw_payload: rawPayload }
};
const translated = translator.translate(entry, canonicalSeed, 'astm-serial', entry.translator.engine);
const normalized = normalize(translated);
assert.strictEqual(normalized.instrument_id, 'inst1');
assert.strictEqual(normalized.results[0].test_code, 'RAW');
assert.strictEqual(normalized.results[0].value, rawPayload);
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'tinylink-map-'));
const mapFilePath = path.join(tempDir, 'inst1.map');
fs.writeFileSync(mapFilePath, [
'# smoke test map',
'HEADER = H|{instrument_id}|{connector}',
'ORDER = O|{sample_id}|{order_tests}'
].join('\n'));
const templateEntry = {
...entry,
files: { config: path.join(process.cwd(), 'config', 'app.yaml') },
translator: {
engine: 'template',
file: mapFilePath,
messages: ['HEADER', 'ORDER'],
forceInstrumentId: true
}
};
const templateTranslated = translator.translate(templateEntry, canonicalSeed, 'astm-serial', templateEntry.translator.engine);
const templateNormalized = normalize(templateTranslated);
assert.strictEqual(templateNormalized.meta.rendered_messages.length, 2);
assert.strictEqual(templateNormalized.meta.rendered_messages[0].body, 'H|inst1|astm-serial');
assert.strictEqual(templateNormalized.meta.rendered_messages[1].body, 'O|raw-1|^^^RAW');
fs.rmSync(tempDir, { recursive: true, force: true });
console.log('Raw pipeline smoke test passed');
}
run();