flecks/packages/core/test/middleware.js

101 lines
2.2 KiB
JavaScript
Raw Normal View History

import {expect} from 'chai';
import {Flecks} from '@flecks/core';
2024-01-16 00:28:20 -06:00
const testOne = require('./packages/one');
const testTwo = require('./packages/two');
const testThree = require('./packages/three');
2024-01-28 08:05:25 -06:00
it('can make middleware', async () => {
const flecks = await Flecks.from({
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');
2024-01-28 08:05:25 -06:00
await new Promise((resolve) => {
mw(foo, () => {
expect(foo.bar).to.equal(4);
resolve();
});
});
});
2024-01-28 08:05:25 -06:00
it('respects explicit middleware configuration', async () => {
const flecks = await Flecks.from({
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');
2024-01-28 08:05:25 -06:00
await new Promise((resolve) => {
mw(foo, () => {
expect(foo.bar).to.equal(3);
resolve();
});
});
});
2024-01-28 08:05:25 -06:00
it('respects middleware elision', async () => {
const flecks = await Flecks.from({
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');
2024-01-28 08:05:25 -06:00
await new Promise((resolve) => {
mw(foo, () => {
expect(foo.bar).to.equal(3);
resolve();
});
});
});
2024-01-09 00:26:53 -06:00
2024-01-28 08:05:25 -06:00
it('throws on elision graph cycle', async () => {
const flecks = await Flecks.from({
2024-01-09 00:26:53 -06:00
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();
});