95 lines
2.0 KiB
JavaScript
95 lines
2.0 KiB
JavaScript
import {expect} from 'chai';
|
|
|
|
import {Flecks} from '@flecks/core';
|
|
|
|
const testOne = require('./one');
|
|
const testTwo = require('./two');
|
|
const testThree = require('./three');
|
|
|
|
it('can make middleware', (done) => {
|
|
const flecks = new Flecks({
|
|
config: {
|
|
'@flecks/core/test': {
|
|
middleware: [
|
|
'@flecks/core/one',
|
|
'@flecks/core/two',
|
|
],
|
|
},
|
|
},
|
|
flecks: {
|
|
'@flecks/core/one': testOne,
|
|
'@flecks/core/two': testTwo,
|
|
},
|
|
});
|
|
const foo = {bar: 1};
|
|
const mw = flecks.makeMiddleware('@flecks/core/test.middleware');
|
|
mw(foo, () => {
|
|
expect(foo.bar).to.equal(4);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('respects explicit middleware configuration', (done) => {
|
|
const flecks = new Flecks({
|
|
config: {
|
|
'@flecks/core/test': {
|
|
middleware: [
|
|
'@flecks/core/two',
|
|
'@flecks/core/one',
|
|
],
|
|
},
|
|
},
|
|
flecks: {
|
|
'@flecks/core/one': testOne,
|
|
'@flecks/core/two': testTwo,
|
|
},
|
|
});
|
|
const foo = {bar: 1};
|
|
const mw = flecks.makeMiddleware('@flecks/core/test.middleware');
|
|
mw(foo, () => {
|
|
expect(foo.bar).to.equal(3);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('respects middleware elision', (done) => {
|
|
const flecks = new Flecks({
|
|
config: {
|
|
'@flecks/core/test': {
|
|
middleware: [
|
|
'...',
|
|
],
|
|
},
|
|
},
|
|
flecks: {
|
|
'@flecks/core/one': testOne,
|
|
'@flecks/core/two': testTwo,
|
|
},
|
|
});
|
|
const foo = {bar: 1};
|
|
const mw = flecks.makeMiddleware('@flecks/core/test.middleware');
|
|
mw(foo, () => {
|
|
expect(foo.bar).to.equal(3);
|
|
done();
|
|
});
|
|
});
|
|
|
|
it('throws on elision graph cycle', () => {
|
|
const flecks = new Flecks({
|
|
config: {
|
|
'@flecks/core/test': {
|
|
middleware: [
|
|
'...',
|
|
],
|
|
},
|
|
},
|
|
flecks: {
|
|
'@flecks/core/one': testOne,
|
|
'@flecks/core/two': testTwo,
|
|
'@flecks/core/three': testThree,
|
|
},
|
|
});
|
|
const tryMaking = () => flecks.makeMiddleware('@flecks/core/test.middleware');
|
|
expect(tryMaking).to.throw();
|
|
});
|