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