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