1import { ConfigPlugin } from '../../Plugin.types'; 2import { withPlugins } from '../withPlugins'; 3 4describe(withPlugins, () => { 5 it('compiles plugins in the correct order', () => { 6 const pluginA: ConfigPlugin = (config) => { 7 config.extra.push('alpha'); 8 return config; 9 }; 10 const pluginB: ConfigPlugin<string> = (config, props = 'charlie') => { 11 config.extra.push('beta', props); 12 return config; 13 }; 14 15 expect( 16 withPlugins({ extra: [], _internal: { projectRoot: '.' } } as any, [ 17 // Standard plugin 18 pluginA, 19 // Plugin with no properties 20 // @ts-ignore: users shouldn't do this. 21 [pluginB], 22 // Plugin with properties 23 [pluginB, 'delta'], 24 ]) 25 ).toStrictEqual({ 26 _internal: { 27 projectRoot: '.', 28 }, 29 extra: ['alpha', 'beta', 'charlie', 'beta', 'delta'], 30 }); 31 }); 32}); 33