-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathnextJsMiddlewareCodemod.test.ts
More file actions
41 lines (36 loc) · 1.37 KB
/
nextJsMiddlewareCodemod.test.ts
File metadata and controls
41 lines (36 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import {resolve} from 'path';
import {
MiddlewareConfiguration,
NextJsMiddlewareCodemod,
} from '@/application/project/code/transformation/javascript/nextJsMiddlewareCodemod';
import {loadFixtures} from '../fixtures';
import {JavaScriptCodemod} from '@/application/project/code/transformation/javascript/javaScriptCodemod';
describe('NextJsMiddlewareCodemod', () => {
const defaultOptions: MiddlewareConfiguration = {
matcherPattern: '/((?!api|_next/static|_next/image|favicon.ico|sitemap.xml|robots.txt).*)',
import: {
module: '@croct/plug-next/middleware',
middlewareFactoryName: 'withCroct',
middlewareName: 'middleware',
},
};
const scenarios = loadFixtures<MiddlewareConfiguration>(
resolve(__dirname, '../fixtures/nextjs-middleware'),
defaultOptions,
{
'matcherAlias.ts': {
import: {
...defaultOptions.import,
},
},
},
);
it.each(scenarios)('should correctly transform $name', async ({name, fixture, options}) => {
const transformer = new JavaScriptCodemod({
languages: ['typescript'],
codemod: new NextJsMiddlewareCodemod(options),
});
const output = await transformer.apply(fixture);
expect(output.result).toMatchSnapshot(name);
});
});