test.js 3.1 KB

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