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.

93 lines
3.0 KiB

/**
* Copyright (c) 2013 Yahoo! Inc. All rights reserved.
*
* Copyrights licensed under the MIT License. See the accompanying LICENSE file
* for terms.
*/
/*global describe, it, beforeEach, before, after */
var expect = require('chai').expect;
var Exception = require('../../lib/Exception.js');
describe('Exception', function () {
it('does not require path', function () {
var exception = new Exception(0, 'name', function(){});
expect(exception.path).to.be.undefined;
});
it('requires ctor to be a function', function () {
expect(function () {
new Exception(0, 'name', null);
}).to.throw('ctor must be a function.');
});
describe('create', function () {
it('should only accept number code', function () {
expect(function () {
Exception.create('zzz');
}).to.throw('must be a number');
expect(function () {
Exception.create();
}).to.throw('must be a number');
expect(function () {
Exception.create(null);
}).to.throw('must be a number');
});
it('should only accept predefined code', function () {
expect(function () {
Exception.create(111111);
}).to.throw('Unknown code');
expect(function () {
Exception.create(-111111);
}).to.throw('Unknown code');
});
it('should return an instance of Error', function () {
var e = Exception.create(Exception.OK);
expect(e).to.be.instanceof(Error);
});
it('should return an instance of Exception', function () {
var e = Exception.create(Exception.OK);
expect(e).to.be.instanceof(Exception);
});
});
describe('getCode', function () {
it('should return the given code.', function () {
var e = Exception.create(Exception.SYSTEM_ERROR);
expect(e.getCode()).to.equal(Exception.SYSTEM_ERROR);
});
});
describe('getName', function () {
it('should return the correct name.', function () {
var e = Exception.create(Exception.SYSTEM_ERROR);
expect(e.getName()).to.equal('SYSTEM_ERROR');
});
});
describe('getPath', function () {
it('should return the correct path.', function () {
var e = Exception.create(Exception.SYSTEM_ERROR, '/test');
expect(e.getPath()).to.equal('/test');
});
});
describe('toString', function () {
it('should return the correctly formatted string.', function () {
var e1 = Exception.create(Exception.NO_NODE, '/test'),
e2 = Exception.create(Exception.NO_NODE);
expect(e1.toString()).to.equal(
'Exception: NO_NODE[' + Exception.NO_NODE + ']@/test'
);
expect(e2.toString()).to.equal(
'Exception: NO_NODE[' + Exception.NO_NODE + ']'
);
});
});
});