@whook/whook
Version:
Build strong and efficient REST web services.
101 lines • 3.24 kB
JavaScript
import { describe, test, beforeEach, jest, expect } from '@jest/globals';
import path from 'node:path';
import * as esbuild from 'esbuild';
import * as esbuildNodeExternals from 'esbuild-node-externals';
import initCompiler from './compiler.js';
import { NodeEnv } from 'application-services';
describe('Compiler', () => {
const ENV = { NODE_ENV: NodeEnv.Production };
const PROJECT_DIR = '/home/whoami/my_project';
const DEBUG_NODE_ENVS = [];
const COMPILER_OPTIONS = {};
const log = jest.fn();
const importer = jest.fn();
beforeEach(() => {
log.mockReset();
importer.mockReset();
});
test('should work with external modules', async () => {
importer.mockResolvedValueOnce(esbuild);
importer.mockResolvedValueOnce(esbuildNodeExternals);
const compiler = await initCompiler({
PROJECT_DIR,
ENV,
DEBUG_NODE_ENVS,
COMPILER_OPTIONS,
importer,
log,
});
const result = await compiler(path.join('src', 'services', 'compiler.ts'));
expect({
extension: result.extension,
contentsLength: result?.contents?.length,
mappingsLength: result?.mappings?.length,
logCalls: log.mock.calls,
}).toMatchInlineSnapshot(`
{
"contentsLength": 87020,
"extension": ".mjs",
"logCalls": [],
"mappingsLength": 0,
}
`);
});
test('should work with code only', async () => {
importer.mockResolvedValueOnce(esbuild);
importer.mockResolvedValueOnce(esbuildNodeExternals);
const compiler = await initCompiler({
PROJECT_DIR,
ENV,
DEBUG_NODE_ENVS,
COMPILER_OPTIONS: { ...COMPILER_OPTIONS, excludeNodeModules: true },
importer,
log,
});
const result = await compiler(path.join('src', 'services', 'compiler.ts'));
expect({
extension: result.extension,
contentsLength: result?.contents?.length,
mappingsLength: result?.mappings?.length,
logCalls: log.mock.calls,
}).toMatchInlineSnapshot(`
{
"contentsLength": 3702,
"extension": ".mjs",
"logCalls": [],
"mappingsLength": 0,
}
`);
});
test('should work with commonjs', async () => {
importer.mockResolvedValueOnce(esbuild);
importer.mockResolvedValueOnce(esbuildNodeExternals);
const compiler = await initCompiler({
PROJECT_DIR,
ENV,
DEBUG_NODE_ENVS,
COMPILER_OPTIONS: {
...COMPILER_OPTIONS,
excludeNodeModules: true,
format: 'cjs',
},
importer,
log,
});
const result = await compiler(path.join('src', 'services', 'compiler.ts'));
expect({
extension: result.extension,
contentsLength: result?.contents?.length,
mappingsLength: result?.mappings?.length,
logCalls: log.mock.calls,
}).toMatchInlineSnapshot(`
{
"contentsLength": 5350,
"extension": ".cjs",
"logCalls": [],
"mappingsLength": 0,
}
`);
});
});
//# sourceMappingURL=compiler.test.js.map