flecks/packages/build/test/server/resolve.js

79 lines
2.0 KiB
JavaScript

import {join} from 'path';
import {expect} from 'chai';
import clearModule from 'clear-module';
import resolve from '@flecks/build/build/resolve';
import Resolver from '@flecks/build/build/resolver';
const {
FLECKS_CORE_ROOT = process.cwd(),
} = process.env;
const root = join(FLECKS_CORE_ROOT, 'test', 'server', 'resolve');
it('can resolve', async () => {
const resolver = new Resolver();
expect(await resolver.resolve('./test/server/resolve'))
.to.equal(join(FLECKS_CORE_ROOT, 'test', 'server', 'resolve.js'));
});
it('can create aliases at runtime', async () => {
const resolver = new Resolver();
expect(await resolver.resolve('./test/server/foobar'))
.to.be.undefined;
resolver.addAlias('./test/server/foobar', './test/server/resolve');
expect(await resolver.resolve('./test/server/foobar'))
.to.not.be.undefined;
});
it('can resolve inexact at runtime', async () => {
const clear = resolve({
alias: {
'./foo': './bar',
},
fallback: {},
}, []);
expect(__non_webpack_require__(join(root, 'blah')))
.to.equal(4);
clear();
clearModule(join(root, 'blah'));
expect(__non_webpack_require__(join(root, 'blah')))
.to.equal(3);
clearModule(join(root, 'blah'));
});
it('can resolve exact at runtime', async () => {
const clear = resolve({
alias: {
'./foo$': './bar',
},
fallback: {},
}, []);
expect(__non_webpack_require__(join(root, 'blah')))
.to.equal(3);
expect(__non_webpack_require__(join(root, 'boo')))
.to.equal(2);
clear();
clearModule(join(root, 'blah'));
clearModule(join(root, 'boo'));
expect(__non_webpack_require__(join(root, 'boo')))
.to.equal(1);
clearModule(join(root, 'boo'));
});
it('can resolve false at runtime', async () => {
const clear = resolve({
alias: {
'./foo': false,
},
fallback: {},
}, []);
expect(__non_webpack_require__(join(root, 'boo')))
.to.be.undefined;
clear();
clearModule(join(root, 'boo'));
expect(__non_webpack_require__(join(root, 'boo')))
.to.equal(1);
});