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