Move middleware sources into core/, refresh config paths, and update design/user docs to reflect the raw payload pipeline.
66 lines
2.1 KiB
JavaScript
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();
|