142 lines
4.3 KiB
JavaScript
142 lines
4.3 KiB
JavaScript
|
/* jshint -W097 */// jshint strict:false
|
||
|
/*jslint node: true */
|
||
|
var expect = require('chai').expect;
|
||
|
var setup = require(__dirname + '/lib/setup');
|
||
|
|
||
|
var objects = null;
|
||
|
var states = null;
|
||
|
var onStateChanged = null;
|
||
|
var onObjectChanged = null;
|
||
|
var sendToID = 1;
|
||
|
|
||
|
var adapterShortName = setup.adapterName.substring(setup.adapterName.indexOf('.') + 1);
|
||
|
var runningMode = require(__dirname + '/../io-package.json').common.mode;
|
||
|
|
||
|
function checkConnectionOfAdapter(cb, counter) {
|
||
|
counter = counter || 0;
|
||
|
console.log('Try check #' + counter);
|
||
|
if (counter > 30) {
|
||
|
if (cb) cb('Cannot check connection');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
states.getState('system.adapter.' + adapterShortName + '.0.alive', function (err, state) {
|
||
|
if (err) console.error(err);
|
||
|
if (state && state.val) {
|
||
|
if (cb) cb();
|
||
|
} else {
|
||
|
setTimeout(function () {
|
||
|
checkConnectionOfAdapter(cb, counter + 1);
|
||
|
}, 1000);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function checkValueOfState(id, value, cb, counter) {
|
||
|
counter = counter || 0;
|
||
|
if (counter > 20) {
|
||
|
if (cb) cb('Cannot check value Of State ' + id);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
states.getState(id, function (err, state) {
|
||
|
if (err) console.error(err);
|
||
|
if (value === null && !state) {
|
||
|
if (cb) cb();
|
||
|
} else
|
||
|
if (state && (value === undefined || state.val === value)) {
|
||
|
if (cb) cb();
|
||
|
} else {
|
||
|
setTimeout(function () {
|
||
|
checkValueOfState(id, value, cb, counter + 1);
|
||
|
}, 500);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function sendTo(target, command, message, callback) {
|
||
|
onStateChanged = function (id, state) {
|
||
|
if (id === 'messagebox.system.adapter.test.0') {
|
||
|
callback(state.message);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
states.pushMessage('system.adapter.' + target, {
|
||
|
command: command,
|
||
|
message: message,
|
||
|
from: 'system.adapter.test.0',
|
||
|
callback: {
|
||
|
message: message,
|
||
|
id: sendToID++,
|
||
|
ack: false,
|
||
|
time: (new Date()).getTime()
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
describe('Test ' + adapterShortName + ' adapter', function() {
|
||
|
before('Test ' + adapterShortName + ' adapter: Start js-controller', function (_done) {
|
||
|
this.timeout(600000); // because of first install from npm
|
||
|
|
||
|
setup.setupController(function () {
|
||
|
var config = setup.getAdapterConfig();
|
||
|
// enable adapter
|
||
|
config.common.enabled = true;
|
||
|
config.common.loglevel = 'debug';
|
||
|
|
||
|
//config.native.dbtype = 'sqlite';
|
||
|
|
||
|
setup.setAdapterConfig(config.common, config.native);
|
||
|
|
||
|
setup.startController(true, function(id, obj) {}, function (id, state) {
|
||
|
if (onStateChanged) onStateChanged(id, state);
|
||
|
},
|
||
|
function (_objects, _states) {
|
||
|
objects = _objects;
|
||
|
states = _states;
|
||
|
_done();
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('Test ' + adapterShortName + ' instance object: it must exists', function (done) {
|
||
|
objects.getObject('system.adapter.' + adapterShortName + '.0', function (err, obj) {
|
||
|
expect(err).to.be.null;
|
||
|
expect(obj).to.be.an('object');
|
||
|
expect(obj).not.to.be.null;
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
it('Test ' + adapterShortName + ' adapter: Check if adapter started', function (done) {
|
||
|
this.timeout(60000);
|
||
|
checkConnectionOfAdapter(function (res) {
|
||
|
if (res) console.log(res);
|
||
|
if (runningMode === 'daemon') {
|
||
|
expect(res).not.to.be.equal('Cannot check connection');
|
||
|
} else {
|
||
|
//??
|
||
|
}
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
/**/
|
||
|
|
||
|
/*
|
||
|
PUT YOUR OWN TESTS HERE USING
|
||
|
it('Testname', function ( done) {
|
||
|
...
|
||
|
});
|
||
|
|
||
|
You can also use "sendTo" method to send messages to the started adapter
|
||
|
*/
|
||
|
|
||
|
after('Test ' + adapterShortName + ' adapter: Stop js-controller', function (done) {
|
||
|
this.timeout(10000);
|
||
|
|
||
|
setup.stopController(function (normalTerminated) {
|
||
|
console.log('Adapter normal terminated: ' + normalTerminated);
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
});
|