You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.0 KiB
82 lines
2.0 KiB
4 years ago
|
/* globals describe it */
|
||
|
|
||
|
const expect = require('chai').expect
|
||
|
|
||
|
const FakeDevice = require('../src/fake-device')
|
||
|
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('FakeDevice', function () {
|
||
|
let fakeDevice = null
|
||
|
|
||
|
it('should throw error if no params are passed', function () {
|
||
|
expect(FakeDevice).to.throw(Error)
|
||
|
})
|
||
|
|
||
|
it('shold throw missing deviceId param', function () {
|
||
|
expect(() => FakeDevice({})).to.throw('Missing deviceId param')
|
||
|
})
|
||
|
|
||
|
it('shold throw missing connection param', function () {
|
||
|
expect(() => FakeDevice({
|
||
|
deviceId: 1
|
||
|
})).to.throw('Missing connection param')
|
||
|
})
|
||
|
|
||
|
it('shold throw missing measurements param', function () {
|
||
|
expect(() => FakeDevice({
|
||
|
deviceId: 1,
|
||
|
connection
|
||
|
})).to.throw('Missing measurements param')
|
||
|
})
|
||
|
|
||
|
it('should create instance', function () {
|
||
|
fakeDevice = FakeDevice({
|
||
|
deviceId: 1,
|
||
|
connection,
|
||
|
sendInterval: 1000,
|
||
|
measurements
|
||
|
})
|
||
|
expect(fakeDevice).to.have.property('start')
|
||
|
})
|
||
|
|
||
|
it('should generate data', function (done) {
|
||
|
fakeDevice.start()
|
||
|
setTimeout(() => {
|
||
|
let data = fakeDevice.getData()
|
||
|
done(!data.length)
|
||
|
}, 500)
|
||
|
})
|
||
|
|
||
|
it('should send data to influx', function (done) {
|
||
|
setTimeout(() => {
|
||
|
if (!connectionWriteData) return done('No data')
|
||
|
if (!connectionWriteData.deviceId) return done('Invalid write data - missing deviceId')
|
||
|
if (
|
||
|
connectionWriteData.data[0].usage &&
|
||
|
connectionWriteData.data[0].voltage &&
|
||
|
connectionWriteData.data[0].temperature &&
|
||
|
connectionWriteData.data[0].timestamp
|
||
|
) {
|
||
|
done()
|
||
|
} else {
|
||
|
done('Invalid write data format')
|
||
|
}
|
||
|
}, 1000)
|
||
|
})
|
||
|
})
|