Home Reference Source Test

test/sensor-handler.test.js

const SensorHandler = require('../class/sensor-handler');

const sensorHandler = new SensorHandler();
console.log(sensorHandler);
/**
 * Tests require fully capable device + manual movement to complete.
 */
describe('SensorHandler', function(){
    beforeEach(()=>{
        return sensorHandler.stopAll();
    });
    this.timeout(5000);//Devices may take a while.
    
    it('getMappedSensorNames', ()=>{
        let names = sensorHandler.getMappedSensorNames();
        chai.expect(names).to.be.an('array');
    });

    it('get', ()=>{
        return sensorHandler.get('test')
        .then((data)=>{
            chai.expect(data).to.equal('test data');

            return Promise.resolve();
        });
    });

    it('watch', ()=>{
        return sensorHandler.watch('test')
        .then((sensorState)=>{
            chai.expect(sensorState).to.be.an('object');
            chai.expect(sensorState.isSensorState).to.equal(true);

            return Promise.resolve();
        });
    });

    it('watchAll', ()=>{
        return sensorHandler.watchAll()
        .then((promises)=>{
            chai.expect(promises).to.be.an('array');

            return Promise.resolve();
        });
    });

    it('stop', ()=>{
        return sensorHandler.watch('test')
        .then(()=>{return sensorHandler.stop('test');})
        .then(()=>{
            return Promise.resolve();
        });
    });

    it('stopAll', ()=>{
        return sensorHandler.stopAll()
        .then((promises)=>{
            chai.expect(promises).to.be.an('array');

            return Promise.resolve();
        });
    });

    it('addSensorEvent', ()=>{
        return sensorHandler.watch('test')
        .then(()=>{
            let handle = function(){};
            sensorHandler.addSensorEvent('test', 'data', handle);
            
            chai.expect(sensorHandler.sensors['test'].events['data'].indexOf(handle)).to.be.greaterThan(-1);
            
            return Promise.resolve();
        })
        .then(()=>{
            return sensorHandler.stop('test');
        });
    });

    it('removeSensorEvent', ()=>{
        return sensorHandler.watch('test')
        .then(()=>{
            let handle = function(){};
            sensorHandler.addSensorEvent('test', 'data', handle);

            chai.expect(sensorHandler.sensors['test'].events['data'].indexOf(handle)).to.be.greaterThan(-1);

            sensorHandler.removeSensorEvent('test', 'data', handle);

            chai.expect(sensorHandler.sensors['test'].events['data'].indexOf(handle)).to.equal(-1);
        })
        .then(()=>{
            return sensorHandler.stop('test');
        });
    });

    it('_SensorState', ()=>{
        chai.expect(sensorHandler._SensorState()).to.be.an('object');
    });
});