webpack-inject-plugin
Version:
A webpack plugin to dynamically inject code into the bundle.
92 lines (85 loc) • 2.59 kB
text/typescript
import { injectEntry, ENTRY_ORDER } from '../main';
describe('injectEntry', () => {
it('appends to the entry config correctly', () => {
expect(injectEntry(undefined, 'foo', {})).toEqual('foo');
expect(injectEntry(['original'], 'added', {})).toEqual([
'added',
'original'
]);
expect(injectEntry('original', 'added', {})).toEqual(['added', 'original']);
expect(injectEntry(['foo', 'bar'], 'baz', {})).toEqual([
'foo',
'baz',
'bar'
]);
expect(injectEntry(['foo', 'bar', 'baz', 'blah'], 'aaa', {})).toEqual([
'foo',
'bar',
'baz',
'aaa',
'blah'
]);
expect(
injectEntry(
{
foo: 'bar',
another: ['an', 'array']
},
'added',
{}
)
).toEqual({
foo: ['added', 'bar'],
another: ['an', 'added', 'array']
});
});
it('appends to only the specified entry', () => {
expect(injectEntry(undefined, 'foo', { entryName: 'bar' })).toBe('foo');
expect(
injectEntry({ foo: 'bar', bar: 'baz' }, 'added', { entryName: 'bar' })
).toEqual({
foo: 'bar',
bar: ['added', 'baz']
});
});
it('supports a filter function', () => {
expect(
injectEntry({ foo: 'bar', bar: 'baz', baz: 'blah' }, 'added', {
entryName: e => e !== 'bar'
})
).toEqual({
foo: ['added', 'bar'],
bar: 'baz',
baz: ['added', 'blah']
});
});
it('throws error for unknown filter type', () => {
expect(() => {
injectEntry('bar', 'foo', {
entryName: { not: 'a function ' } as any
});
}).toThrowError();
});
it('respects the config for ordering', () => {
expect(
injectEntry(['foo', 'bar'], 'baz', { entryOrder: ENTRY_ORDER.First })
).toEqual(['baz', 'foo', 'bar']);
expect(
injectEntry(['foo', 'bar'], 'baz', { entryOrder: ENTRY_ORDER.Last })
).toEqual(['foo', 'bar', 'baz']);
expect(
injectEntry(['foo', 'bar'], 'baz', { entryOrder: ENTRY_ORDER.NotLast })
).toEqual(['foo', 'baz', 'bar']);
});
it('order config for strings', () => {
expect(
injectEntry('original', 'new', { entryOrder: ENTRY_ORDER.First })
).toEqual(['new', 'original']);
expect(
injectEntry('original', 'new', { entryOrder: ENTRY_ORDER.Last })
).toEqual(['original', 'new']);
expect(
injectEntry('original', 'new', { entryOrder: ENTRY_ORDER.NotLast })
).toEqual(['new', 'original']);
});
});