nx/packages/next/src/utils/compose-plugins.spec.ts

60 lines
1.4 KiB
TypeScript

import { NextConfig } from 'next';
import { composePlugins } from './compose-plugins';
import { NextConfigFn } from './config';
describe('composePlugins', () => {
it('should combine multiple plugins', async () => {
const nextConfig: NextConfig = {
env: {
original: 'original',
},
};
const a = (config: NextConfig): NextConfig => {
config.env['a'] = 'a';
return config;
};
const b = (config: NextConfig): NextConfig => {
config.env['b'] = 'b';
return config;
};
const fn = await composePlugins(a, b);
const output = await fn(nextConfig)('test', {});
expect(output).toEqual({
env: {
original: 'original',
a: 'a',
b: 'b',
},
});
});
it('should compose plugins that return an async function', async () => {
const nextConfig: NextConfig = {
env: {
original: 'original',
},
};
const a = (config: NextConfig): NextConfig => {
config.env['a'] = 'a';
return config;
};
const b = (config: NextConfig): NextConfigFn => {
return (phase: string) => {
config.env['b'] = phase;
return config;
};
};
const fn = await composePlugins(a, b);
const output = await fn(nextConfig)('test', {});
expect(output).toEqual({
env: {
original: 'original',
a: 'a',
b: 'test',
},
});
});
});