61 lines
2.1 KiB
JavaScript
61 lines
2.1 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
|
|
const NodeClass = require('../../src/nodeClass');
|
|
const { makeNodeStub, makeREDStub } = require('../helpers/factories');
|
|
|
|
test('input handler routes topics to source methods', () => {
|
|
const inst = Object.create(NodeClass.prototype);
|
|
const node = makeNodeStub();
|
|
|
|
const calls = [];
|
|
inst.node = node;
|
|
inst.RED = makeREDStub({
|
|
child1: {
|
|
source: { id: 'child-source' },
|
|
},
|
|
});
|
|
|
|
inst.source = {
|
|
childRegistrationUtils: {
|
|
registerChild(childSource, pos) {
|
|
calls.push(['registerChild', childSource, pos]);
|
|
},
|
|
},
|
|
setMode(mode) {
|
|
calls.push(['setMode', mode]);
|
|
},
|
|
handleInput(source, action, parameter) {
|
|
calls.push(['handleInput', source, action, parameter]);
|
|
},
|
|
showWorkingCurves() {
|
|
return { ok: true };
|
|
},
|
|
showCoG() {
|
|
return { cog: 1 };
|
|
},
|
|
updateMeasuredPressure(value, position) {
|
|
calls.push(['updateMeasuredPressure', value, position]);
|
|
},
|
|
updateMeasuredFlow(value, position) {
|
|
calls.push(['updateMeasuredFlow', value, position]);
|
|
},
|
|
updateMeasuredTemperature(value, position) {
|
|
calls.push(['updateMeasuredTemperature', value, position]);
|
|
},
|
|
};
|
|
|
|
inst._attachInputHandler();
|
|
const onInput = node._handlers.input;
|
|
|
|
onInput({ topic: 'setMode', payload: 'auto' }, () => {}, () => {});
|
|
onInput({ topic: 'execSequence', payload: { source: 'GUI', action: 'execSequence', parameter: 'startup' } }, () => {}, () => {});
|
|
onInput({ topic: 'registerChild', payload: 'child1', positionVsParent: 'downstream' }, () => {}, () => {});
|
|
onInput({ topic: 'simulateMeasurement', payload: { type: 'pressure', position: 'upstream', value: 250, unit: 'mbar' } }, () => {}, () => {});
|
|
|
|
assert.deepEqual(calls[0], ['setMode', 'auto']);
|
|
assert.deepEqual(calls[1], ['handleInput', 'GUI', 'execSequence', 'startup']);
|
|
assert.deepEqual(calls[2], ['registerChild', { id: 'child-source' }, 'downstream']);
|
|
assert.deepEqual(calls[3], ['updateMeasuredPressure', 250, 'upstream']);
|
|
});
|