28 lines
976 B
JavaScript
28 lines
976 B
JavaScript
'use strict';
|
|
const assert = require('node:assert');
|
|
const { createSubscribers } = require('../lib/notify-fanout.js');
|
|
|
|
let passed = 0;
|
|
function check(name, fn) {
|
|
try { fn(); console.log(' ok -', name); passed++; }
|
|
catch (e) { console.error(' FAIL -', name, e.message); process.exitCode = 1; }
|
|
}
|
|
|
|
const subs = createSubscribers();
|
|
const wcA = { id: 'A', send: function (ch, payload) { this._last = [ch, payload]; } };
|
|
const wcB = { id: 'B', send: function (ch, payload) { this._last = [ch, payload]; } };
|
|
|
|
subs.addClip(wcA);
|
|
subs.addFav(wcB);
|
|
|
|
check('notifyClip only sends to clip subs', () => {
|
|
subs.notifyClip('clips:added', { id: 1 });
|
|
assert.deepStrictEqual(wcA._last, ['clips:added', { id: 1 }]);
|
|
assert.strictEqual(wcB._last, undefined);
|
|
});
|
|
|
|
check('notifyFav only sends to fav subs', () => {
|
|
subs.notifyFav('favorites:changed');
|
|
assert.strictEqual(wcA._last[0], 'clips:added', 'A untouched');
|
|
assert.strictEqual(wcB._last[0], 'favorites:changed');
|
|
}); |