/* globals describe it */ const expect = require('chai').expect const FakeDeviceManager = require('../src/fake-device-manager') const measurements = { usage: {type: 'integer', min: 0, max: 100}, voltage: {type: 'integer', min: 0, max: 15}, temperature: {type: 'integer', min: -20, max: 60} } // create fake influx connection // let connectionWriteData = false const connection = { send: (deviceId, data) => { return new Promise((resolve, reject) => { // connectionWriteData = {deviceId, data} resolve() }) } } describe('FakeDeviceManager', function () { let fakeDeviceManager = null it('should throw error if no params are passed', function () { expect(FakeDeviceManager).to.throw(Error) }) it('shold throw missing connection param', function () { expect(() => FakeDeviceManager({})).to.throw('Missing connection param') }) it('shold throw missing measurements param', function () { expect(() => FakeDeviceManager({ connection })).to.throw('Missing measurements param') }) it('should create instance', function () { fakeDeviceManager = FakeDeviceManager({ connection, measurements, sendInterval: 500 }) expect(fakeDeviceManager).to.have.property('start') }) it('should spawn device instances', function (done) { fakeDeviceManager.start() setTimeout(() => { let devices = fakeDeviceManager.getDevices() done(!devices.length) }, 500) }) it('should collect device stats', function (done) { setTimeout(() => { let stats = fakeDeviceManager.getStats() if (!stats) return done('No data') if ( stats.devices && stats.measurements && stats.writes && stats.size ) { done() } else { done('Invalid write data format') } }, 1000) }) })