copay/test/test.API.js

85 lines
2.2 KiB
JavaScript
Raw Normal View History

'use strict';
var chai = chai || require('chai');
var should = chai.should();
var API = API || require('../API');
describe('API', function() {
it('should have a command called "echo"', function() {
var api = new API();
should.exist(api.echo);
});
it('should have argTypes for every command', function() {
for (var i in API.prototype) {
var f = API.prototype[i];
if (i[0] != '_' && typeof f == 'function') {
f.argTypes.length.should.be.greaterThan(0);
}
};
})
it('should throw an error for all commands when called with wrong number of arguments', function() {
var api = new API();
for (var i in API.prototype) {
var f = API.prototype[i];
if (i[0] != '_' && typeof f == 'function') {
var a = new Array();
for (var j = 0; j <= f.argTypes.length + 1; j++) {
a.push(0);
}
(function() {
api[i].apply(api, a);
}).should.throw();
}
};
});
it('should have a callback in the arguments on every command', function() {
for (var i in API.prototype) {
var f = API.prototype[i];
if (i[0] != '_' && typeof f == 'function') {
f.argTypes[f.argTypes.length-1][0].should.equal('callback');
f.argTypes[f.argTypes.length-1][1].should.equal('function');
}
}
});
describe('#echo', function() {
it('should echo a string', function(done) {
var api = new API();
var str = 'mystr';
api.echo(str, function(err, result) {
result.should.equal(str);
done();
});
});
});
describe('#echoNumber', function() {
it('should echo a number', function(done) {
var api = new API();
var num = 500;
api.echo(num, function(err, result) {
result.should.equal(num);
(typeof result).should.equal('number');
done();
});
});
});
describe('#echoObject', function() {
it('should echo an object', function(done) {
var api = new API();
var obj = {test:'test'};
api.echo(obj, function(err, result) {
result.test.should.equal(obj.test);
(typeof result).should.equal('object');
done();
});
});
});
});