latus/packages/core/test/middleware.js

74 lines
1.8 KiB
JavaScript
Raw Normal View History

2020-11-30 06:28:29 -06:00
import {expect} from 'chai';
import Middleware from '../src/middleware';
describe('@latus/core', () => {
describe('middleware', () => {
it('should construct with middleware', (done) => {
let called = false;
const middleware = new Middleware([
(next) => {
called = true;
next();
},
]);
middleware.dispatch(() => {
2021-01-03 18:07:40 -06:00
expect(called).to.be.true;
2020-11-30 06:28:29 -06:00
done();
});
});
it('should pass args', (done) => {
const middleware = new Middleware([
(arg, next) => {
expect(arg).to.equal(69);
next();
},
]);
middleware.dispatch(69, done);
});
describe('error handling', () => {
it('should skip when necessary', (done) => {
let progress = 0;
const middleware = new Middleware([
(next) => {
progress += 1;
next();
},
(error, next) => {
throw new Error();
},
(next) => {
progress += 1;
next();
},
]);
middleware.dispatch((error) => {
expect(error).to.equal(undefined);
expect(progress).to.equal(2);
done();
});
});
it('should use when necessary', (done) => {
let progress = 0;
const middleware = new Middleware([
(next) => {
progress += 1;
next(new Error());
},
(error, next) => {
next(error);
},
(next) => {
progress += 1;
next();
},
]);
middleware.dispatch((error) => {
expect(error).to.not.equal(undefined);
expect(progress).to.equal(1);
done();
});
});
});
});
});