@pryv/monitor
Version:
Extends `pryv` with event-driven notifications for changes on a Pryv.io account
95 lines (79 loc) • 2.66 kB
JavaScript
/**
* @license
* [BSD-3-Clause](https://github.com/pryv/lib-js/blob/master/LICENSE)
*/
/* global describe, it, before, expect, pryv, conn, apiEndpoint, prepareAndCreateBaseStreams */
require('./load-helpers');
describe('Monitor + EventsTimer', function () {
this.timeout(20000);
before(async () => {
await prepareAndCreateBaseStreams();
});
describe('init', () => {
it('throw error if timer is not inistialized with correct time', async () => {
const monitor = new pryv.Monitor(apiEndpoint, { limit: 1 });
try {
/* eslint-disable-next-line no-new */
new pryv.Monitor.UpdateMethod.EventsTimer(monitor, 'Rt');
} catch (e) {
return expect(e.message).to.equal('Monitor timer refresh rate is not valid. It should be a number > 1');
}
throw new Error('Should thow error');
});
});
describe('timer updates', () => {
it('Detect new events added', async function () {
const monitor = new pryv.Monitor(apiEndpoint, { limit: 1 })
.addUpdateMethod(new pryv.Monitor.UpdateMethod.EventsTimer(1));
await monitor.start();
let count = 0;
// listener is added "after" so we don't get events loaded at start
monitor.on('event', function (event) {
expect(event.content).to.equal(eventData.content);
count++;
});
const eventData = {
streamId: global.testStreamId,
type: 'note/txt',
content: 'hello monitor ' + new Date()
};
await conn.api([
{
method: 'events.create',
params: eventData
}
]);
await new Promise(resolve => setTimeout(resolve, 4000));
monitor.stop();
expect(count).to.be.gt(0);
});
});
describe('stop', () => {
it('Monitor stops when requested', async function () {
this.timeout(20000);
const monitor = await new pryv.Monitor(apiEndpoint, { limit: 1 })
.addUpdateMethod(new pryv.Monitor.UpdateMethod.EventsTimer(1));
await monitor.start();
let count = 0;
await new Promise(resolve => setTimeout(resolve, 4000));
monitor.stop();
// listener is added "after" so we don't get events loaded at start
monitor.on('event', function (event) {
count++;
});
const eventData = {
streamId: global.testStreamId,
type: 'note/txt',
content: 'hello monitor ' + new Date()
};
await conn.api([
{
method: 'events.create',
params: eventData
}
]);
await new Promise(resolve => setTimeout(resolve, 5000));
expect(count).to.equal(0);
});
});
});