• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3var errcode = require('../index');
4var expect = require('expect.js');
5
6describe('errcode', function () {
7    describe('string as first argument', function () {
8        it('should create an error object without code', function () {
9            var err = errcode('my message');
10
11            expect(err).to.be.an(Error);
12            expect(err.hasOwnProperty(err.code)).to.be(false);
13        });
14
15        it('should create an error object with code', function () {
16            var err = errcode('my message', 'ESOME');
17
18            expect(err).to.be.an(Error);
19            expect(err.code).to.be('ESOME');
20        });
21
22        it('should create an error object with code and properties', function () {
23            var err = errcode('my message', 'ESOME', { foo: 'bar', bar: 'foo' });
24
25            expect(err).to.be.an(Error);
26            expect(err.code).to.be('ESOME');
27            expect(err.foo).to.be('bar');
28            expect(err.bar).to.be('foo');
29        });
30
31        it('should create an error object without code but with properties', function () {
32            var err = errcode('my message', { foo: 'bar', bar: 'foo' });
33
34            expect(err).to.be.an(Error);
35            expect(err.code).to.be(undefined);
36            expect(err.foo).to.be('bar');
37            expect(err.bar).to.be('foo');
38        });
39    });
40
41    describe('error as first argument', function () {
42        it('should accept an error and do nothing', function () {
43            var myErr = new Error('my message');
44            var err = errcode(myErr);
45
46            expect(err).to.be(myErr);
47            expect(err.hasOwnProperty(err.code)).to.be(false);
48        });
49
50        it('should accept an error and add a code', function () {
51            var myErr = new Error('my message');
52            var err = errcode(myErr, 'ESOME');
53
54            expect(err).to.be(myErr);
55            expect(err.code).to.be('ESOME');
56        });
57
58        it('should accept an error object and add code & properties', function () {
59            var myErr = new Error('my message');
60            var err = errcode(myErr, 'ESOME', { foo: 'bar', bar: 'foo' });
61
62            expect(err).to.be.an(Error);
63            expect(err.code).to.be('ESOME');
64            expect(err.foo).to.be('bar');
65            expect(err.bar).to.be('foo');
66        });
67
68        it('should create an error object without code but with properties', function () {
69            var myErr = new Error('my message');
70            var err = errcode(myErr, { foo: 'bar', bar: 'foo' });
71
72            expect(err).to.be.an(Error);
73            expect(err.code).to.be(undefined);
74            expect(err.foo).to.be('bar');
75            expect(err.bar).to.be('foo');
76        });
77    });
78
79    it('should allow passing null & undefined in the first argument', function () {
80        var err;
81
82        err = errcode(null, 'ESOME');
83        expect(err).to.be.an(Error);
84        expect(err.message).to.be('null');
85        expect(err.code).to.be('ESOME');
86
87        err = errcode(undefined, 'ESOME');
88        expect(err).to.be.an(Error);
89        expect(err.message).to.be('');
90        expect(err.code).to.be('ESOME');
91    });
92});
93