chore: tests
This commit is contained in:
parent
958f97ed21
commit
f3bd6e73cf
2
packages/core/build/flecks.yml
Normal file
2
packages/core/build/flecks.yml
Normal file
|
@ -0,0 +1,2 @@
|
|||
# This isn't a "real" `flecks.yml`. It only exists for testing purposes.
|
||||
'@flecks/core:./src': {}
|
|
@ -1,3 +1,4 @@
|
|||
'@flecks/core:../src': {}
|
||||
'@flecks/core/one:./fleck-one': {}
|
||||
'@flecks/core/two:./fleck-two': {}
|
||||
'@flecks/core/one:./one': {}
|
||||
'@flecks/core/one/server:./one/server': {}
|
||||
'@flecks/core/two:./two': {}
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
import Flecks, {Hooks} from '../../src/flecks';
|
||||
|
||||
export default {
|
||||
[Hooks]: {
|
||||
'@flecks/core/config': () => ({
|
||||
foo: 'bar',
|
||||
'test-gather.decorate': ['...'],
|
||||
}),
|
||||
'./fleck-one/test-gather': (
|
||||
Flecks.provide(require.context('./things', false, /\.js$/))
|
||||
),
|
||||
'./fleck-one/test-gather.decorate': (
|
||||
Flecks.decorate(require.context('./things/decorators', false, /\.js$/))
|
||||
),
|
||||
'flecks-test-invoke': () => 69,
|
||||
'flecks-test-invoke-parallel': (O) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
O.foo *= 2;
|
||||
},
|
||||
'flecks-test-invoke-reduce': () => ({foo: 69}),
|
||||
'flecks-test-invoke-reduce-async': () => new Promise((resolve) => resolve({foo: 69})),
|
||||
},
|
||||
};
|
|
@ -1,19 +0,0 @@
|
|||
import Flecks, {Hooks} from '../../src/flecks';
|
||||
|
||||
export default {
|
||||
[Hooks]: {
|
||||
'./fleck-one/test-gather': (
|
||||
Flecks.provide(require.context('./things', false, /\.js$/))
|
||||
),
|
||||
'flecks-test-invoke': () => 420,
|
||||
'flecks-test-invoke-parallel': (O) => new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
O.foo += 2;
|
||||
resolve();
|
||||
}, 0);
|
||||
}),
|
||||
'flecks-test-invoke-reduce': () => ({bar: 420}),
|
||||
'flecks-test-invoke-reduce-async': () => new Promise((resolve) => resolve({bar: 420})),
|
||||
},
|
||||
};
|
|
@ -3,17 +3,17 @@ import {expect} from 'chai';
|
|||
// eslint-disable-next-line import/no-unresolved
|
||||
import {Flecks, ById, ByType} from '@flecks/core';
|
||||
|
||||
const testFleckOne = require('./fleck-one');
|
||||
const testFleckTwo = require('./fleck-two');
|
||||
const testOne = require('./one');
|
||||
const testTwo = require('./two');
|
||||
|
||||
it('can gather', () => {
|
||||
const flecks = new Flecks({
|
||||
flecks: {
|
||||
'./fleck-one': testFleckOne,
|
||||
'./fleck-two': testFleckTwo,
|
||||
'@flecks/core/one': testOne,
|
||||
'@flecks/core/two': testTwo,
|
||||
},
|
||||
});
|
||||
const Gathered = flecks.gather('./fleck-one/test-gather');
|
||||
const Gathered = flecks.gather('@flecks/core/one/test-gather');
|
||||
expect(Object.keys(Gathered[ByType]).length)
|
||||
.to.equal(Object.keys(Gathered[ById]).length);
|
||||
const typeKeys = Object.keys(Gathered[ByType]);
|
||||
|
|
|
@ -3,7 +3,7 @@ import {expect} from 'chai';
|
|||
// eslint-disable-next-line import/no-unresolved
|
||||
import {Flecks} from '@flecks/core';
|
||||
|
||||
const testFleckOne = require('./fleck-one');
|
||||
const testOne = require('./one');
|
||||
|
||||
it('can create an empty instance', () => {
|
||||
const flecks = new Flecks();
|
||||
|
@ -20,14 +20,14 @@ it('can create an empty instance', () => {
|
|||
it('can gather config', () => {
|
||||
let flecks;
|
||||
flecks = new Flecks({
|
||||
flecks: {'./fleck-one': testFleckOne},
|
||||
flecks: {'@flecks/core/one': testOne},
|
||||
});
|
||||
expect(flecks.get(['./fleck-one']))
|
||||
expect(flecks.get(['@flecks/core/one']))
|
||||
.to.contain({foo: 'bar'});
|
||||
flecks = new Flecks({
|
||||
config: {'./fleck-one': {foo: 'baz'}},
|
||||
flecks: {'./fleck-one': testFleckOne},
|
||||
config: {'@flecks/core/one': {foo: 'baz'}},
|
||||
flecks: {'@flecks/core/one': testOne},
|
||||
});
|
||||
expect(flecks.get(['./fleck-one']))
|
||||
expect(flecks.get(['@flecks/core/one']))
|
||||
.to.contain({foo: 'baz'});
|
||||
});
|
||||
|
|
|
@ -3,41 +3,41 @@ import {expect} from 'chai';
|
|||
// eslint-disable-next-line import/no-unresolved
|
||||
import {Flecks} from '@flecks/core';
|
||||
|
||||
const testFleckOne = require('./fleck-one');
|
||||
const testFleckTwo = require('./fleck-two');
|
||||
const testOne = require('./one');
|
||||
const testTwo = require('./two');
|
||||
|
||||
let flecks;
|
||||
|
||||
beforeEach(() => {
|
||||
flecks = new Flecks({
|
||||
flecks: {
|
||||
'./fleck-one': testFleckOne,
|
||||
'./fleck-two': testFleckTwo,
|
||||
'@flecks/core/one': testOne,
|
||||
'@flecks/core/two': testTwo,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it('can invoke', () => {
|
||||
expect(flecks.invoke('flecks-test-invoke'))
|
||||
expect(flecks.invoke('@flecks/core/test/invoke'))
|
||||
.to.deep.equal({
|
||||
'./fleck-one': 69,
|
||||
'./fleck-two': 420,
|
||||
'@flecks/core/one': 69,
|
||||
'@flecks/core/two': 420,
|
||||
});
|
||||
});
|
||||
|
||||
it('can invoke parallel', async () => {
|
||||
const O = {foo: 3};
|
||||
await Promise.all(flecks.invokeParallel('flecks-test-invoke-parallel', O));
|
||||
await Promise.all(flecks.invokeParallel('@flecks/core/test/invoke-parallel', O));
|
||||
expect(O.foo)
|
||||
.to.equal(8);
|
||||
});
|
||||
|
||||
it('can invoke reduced', () => {
|
||||
expect(flecks.invokeReduce('flecks-test-invoke-reduce'))
|
||||
expect(flecks.invokeReduce('@flecks/core/test/invoke-reduce'))
|
||||
.to.deep.equal({foo: 69, bar: 420});
|
||||
});
|
||||
|
||||
it('can invoke reduced async', async () => {
|
||||
expect(await flecks.invokeReduce('flecks-test-invoke-reduce'))
|
||||
expect(await flecks.invokeReduce('@flecks/core/test/invoke-reduce'))
|
||||
.to.deep.equal({foo: 69, bar: 420});
|
||||
});
|
||||
|
|
0
packages/core/test/one/client/index.js
Normal file
0
packages/core/test/one/client/index.js
Normal file
31
packages/core/test/one/index.js
Normal file
31
packages/core/test/one/index.js
Normal file
|
@ -0,0 +1,31 @@
|
|||
// eslint-disable-next-line import/no-unresolved
|
||||
import {Flecks, Hooks} from '@flecks/core';
|
||||
|
||||
export const testNodespace = () => [
|
||||
/* eslint-disable no-eval */
|
||||
eval('typeof require.context'),
|
||||
eval('typeof __non_webpack_require__'),
|
||||
/* eslint-enable no-eval */
|
||||
];
|
||||
|
||||
export default {
|
||||
[Hooks]: {
|
||||
'@flecks/core/config': () => ({
|
||||
foo: 'bar',
|
||||
'test-gather.decorate': ['...'],
|
||||
}),
|
||||
'@flecks/core/one/test-gather': (
|
||||
Flecks.provide(require.context('./things', false, /\.js$/))
|
||||
),
|
||||
'@flecks/core/one/test-gather.decorate': (
|
||||
Flecks.decorate(require.context('./things/decorators', false, /\.js$/))
|
||||
),
|
||||
'@flecks/core/test/invoke': () => 69,
|
||||
'@flecks/core/test/invoke-parallel': (O) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
O.foo *= 2;
|
||||
},
|
||||
'@flecks/core/test/invoke-reduce': () => ({foo: 69}),
|
||||
'@flecks/core/test/invoke-reduce-async': () => new Promise((resolve) => resolve({foo: 69})),
|
||||
},
|
||||
};
|
0
packages/core/test/one/server/index.js
Normal file
0
packages/core/test/one/server/index.js
Normal file
33
packages/core/test/platforms/server/bootstrap.js
vendored
33
packages/core/test/platforms/server/bootstrap.js
vendored
|
@ -3,10 +3,39 @@ import {expect} from 'chai';
|
|||
// eslint-disable-next-line import/no-unresolved
|
||||
import {Flecks} from '@flecks/core/server';
|
||||
|
||||
it('can bootstrap', () => {
|
||||
const flecks = Flecks.bootstrap({root: './test'});
|
||||
it('bootstraps FLECKS_ROOT by default', () => {
|
||||
const flecks = Flecks.bootstrap();
|
||||
expect(flecks.fleck('@flecks/core')).to.not.equal(undefined);
|
||||
});
|
||||
|
||||
it('bootstraps server platform by default', () => {
|
||||
const flecks = Flecks.bootstrap();
|
||||
expect(flecks.fleck('@flecks/core/server')).to.not.equal(undefined);
|
||||
});
|
||||
|
||||
it('can bootstrap from a foreign root', () => {
|
||||
const flecks = Flecks.bootstrap({root: './test'});
|
||||
expect(flecks.fleck('@flecks/core/one')).to.not.equal(undefined);
|
||||
expect(flecks.fleck('@flecks/core/two')).to.not.equal(undefined);
|
||||
});
|
||||
|
||||
it('can bootstrap other platforms', () => {
|
||||
const flecks = Flecks.bootstrap({platforms: ['client'], root: './test'});
|
||||
expect(flecks.fleck('@flecks/core/one')).to.not.equal(undefined);
|
||||
expect(flecks.fleck('@flecks/core/one/client')).to.not.equal(undefined);
|
||||
expect(flecks.fleck('@flecks/core/one/server')).to.not.equal(undefined);
|
||||
});
|
||||
|
||||
it('can exclude platforms', () => {
|
||||
const flecks = Flecks.bootstrap({platforms: ['client'], root: './test', without: ['server']});
|
||||
expect(flecks.fleck('@flecks/core/one')).to.not.equal(undefined);
|
||||
expect(flecks.fleck('@flecks/core/one/client')).to.not.equal(undefined);
|
||||
expect(flecks.fleck('@flecks/core/one/server')).to.equal(undefined);
|
||||
});
|
||||
|
||||
it('provides webpack goodies in nodespace', () => {
|
||||
const flecks = Flecks.bootstrap({root: './test'});
|
||||
flecks.fleck('@flecks/core/one').testNodespace().forEach((result) => {
|
||||
expect(result).to.not.equal('undefined');
|
||||
});
|
||||
});
|
||||
|
|
20
packages/core/test/two/index.js
Normal file
20
packages/core/test/two/index.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
// eslint-disable-next-line import/no-unresolved
|
||||
import {Flecks, Hooks} from '@flecks/core';
|
||||
|
||||
export default {
|
||||
[Hooks]: {
|
||||
'@flecks/core/one/test-gather': (
|
||||
Flecks.provide(require.context('./things', false, /\.js$/))
|
||||
),
|
||||
'@flecks/core/test/invoke': () => 420,
|
||||
'@flecks/core/test/invoke-parallel': (O) => new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
O.foo += 2;
|
||||
resolve();
|
||||
}, 0);
|
||||
}),
|
||||
'@flecks/core/test/invoke-reduce': () => ({bar: 420}),
|
||||
'@flecks/core/test/invoke-reduce-async': () => new Promise((resolve) => resolve({bar: 420})),
|
||||
},
|
||||
};
|
Loading…
Reference in New Issue
Block a user