Skip to content

Commit 06f78ed

Browse files
committed
feat(presets): add util functions to create ESM presets
1 parent 922d6d0 commit 06f78ed

File tree

6 files changed

+408
-98
lines changed

6 files changed

+408
-98
lines changed

e2e/presets/__tests__/presets.spec.ts

+12-37
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import {
2-
JS_EXT_TO_TREAT_AS_ESM,
3-
TS_EXT_TO_TREAT_AS_ESM,
42
createDefaultPreset,
3+
createDefaultLegacyPreset,
54
createDefaultEsmPreset,
5+
createDefaultEsmLegacyPreset,
66
createJsWithTsPreset,
7+
createJsWithTsLegacyPreset,
78
createJsWithTsEsmPreset,
9+
createJsWithTsEsmLegacyPreset,
810
createJsWithBabelPreset,
11+
createJsWithBabelLegacyPreset,
912
createJsWithBabelEsmPreset,
13+
createJsWithBabelEsmLegacyPreset,
1014
} from 'ts-jest'
1115
// @ts-expect-error we have this file but we don't have type definition for it
1216
import defaultPreset from 'ts-jest/jest-preset'
@@ -16,46 +20,17 @@ import extendedJestConfig from '../extended-jest-config'
1620

1721
test('presets', () => {
1822
expect(defaultPreset).toEqual(createDefaultPreset())
19-
expect(presets.defaultsLegacy).toEqual({
20-
transform: {
21-
'^.+\\.tsx?$': ['ts-jest/legacy', {}],
22-
},
23-
})
23+
expect(presets.defaultsLegacy).toEqual(createDefaultLegacyPreset())
2424
expect(presets.defaultsESM).toEqual(createDefaultEsmPreset())
25-
expect(presets.defaultsESMLegacy).toEqual({
26-
extensionsToTreatAsEsm: [...TS_EXT_TO_TREAT_AS_ESM],
27-
transform: {
28-
'^.+\\.tsx?$': ['ts-jest/legacy', { useESM: true }],
29-
},
30-
})
25+
expect(presets.defaultsESMLegacy).toEqual(createDefaultEsmLegacyPreset())
3126
expect(presets.jsWithTs).toEqual(createJsWithTsPreset())
32-
expect(presets.jsWithTsLegacy).toEqual({
33-
transform: {
34-
'^.+\\.[tj]sx?$': ['ts-jest/legacy', {}],
35-
},
36-
})
27+
expect(presets.jsWithTsLegacy).toEqual(createJsWithTsLegacyPreset())
3728
expect(presets.jsWithTsESM).toEqual(createJsWithTsEsmPreset())
38-
expect(presets.jsWithTsESMLegacy).toEqual({
39-
extensionsToTreatAsEsm: [...JS_EXT_TO_TREAT_AS_ESM, ...TS_EXT_TO_TREAT_AS_ESM],
40-
transform: {
41-
'^.+\\.m?[tj]sx?$': ['ts-jest/legacy', { useESM: true }],
42-
},
43-
})
29+
expect(presets.jsWithTsESMLegacy).toEqual(createJsWithTsEsmLegacyPreset())
4430
expect(presets.jsWithBabel).toEqual(createJsWithBabelPreset())
45-
expect(presets.jsWithBabelLegacy).toEqual({
46-
transform: {
47-
'^.+\\.tsx?$': ['ts-jest/legacy', {}],
48-
'^.+\\.jsx?$': 'babel-jest',
49-
},
50-
})
31+
expect(presets.jsWithBabelLegacy).toEqual(createJsWithBabelLegacyPreset())
5132
expect(presets.jsWithBabelESM).toEqual(createJsWithBabelEsmPreset())
52-
expect(presets.jsWithBabelESMLegacy).toEqual({
53-
extensionsToTreatAsEsm: [...JS_EXT_TO_TREAT_AS_ESM, ...TS_EXT_TO_TREAT_AS_ESM],
54-
transform: {
55-
'^.+\\.tsx?$': ['ts-jest/legacy', { useESM: true }],
56-
'^.+\\.m?[j]sx?$': 'babel-jest',
57-
},
58-
})
33+
expect(presets.jsWithBabelESMLegacy).toEqual(createJsWithBabelEsmLegacyPreset())
5934
})
6035

6136
test('should allow extending jest config without type issues when using create preset util functions', () => {

presets/index.js

+12-19
Original file line numberDiff line numberDiff line change
@@ -1,60 +1,53 @@
1-
const { JS_EXT_TO_TREAT_AS_ESM, TS_EXT_TO_TREAT_AS_ESM } = require('../dist/constants')
21
const {
3-
createJestPreset,
42
createDefaultPreset,
53
createDefaultEsmPreset,
64
createJsWithTsPreset,
75
createJsWithTsEsmPreset,
86
createJsWithBabelPreset,
97
createJsWithBabelEsmPreset,
8+
createDefaultLegacyPreset,
9+
createDefaultEsmLegacyPreset,
10+
createJsWithTsLegacyPreset,
11+
createJsWithTsEsmLegacyPreset,
12+
createJsWithBabelLegacyPreset,
13+
createJsWithBabelEsmLegacyPreset,
1014
} = require('../dist/presets/create-jest-preset')
1115

1216
module.exports = {
1317
get defaults() {
1418
return createDefaultPreset()
1519
},
1620
get defaultsLegacy() {
17-
return createJestPreset(true, false)
21+
return createDefaultLegacyPreset()
1822
},
1923
get defaultsESM() {
2024
return createDefaultEsmPreset()
2125
},
2226
get defaultsESMLegacy() {
23-
return createJestPreset(true, false, { extensionsToTreatAsEsm: TS_EXT_TO_TREAT_AS_ESM })
27+
return createDefaultEsmLegacyPreset()
2428
},
2529
get jsWithTs() {
2630
return createJsWithTsPreset()
2731
},
2832
get jsWithTsLegacy() {
29-
return createJestPreset(true, true)
33+
return createJsWithTsLegacyPreset()
3034
},
3135
get jsWithTsESM() {
3236
return createJsWithTsEsmPreset()
3337
},
3438
get jsWithTsESMLegacy() {
35-
return createJestPreset(true, true, {
36-
extensionsToTreatAsEsm: [...JS_EXT_TO_TREAT_AS_ESM, ...TS_EXT_TO_TREAT_AS_ESM],
37-
})
39+
return createJsWithTsEsmLegacyPreset()
3840
},
3941
get jsWithBabel() {
4042
return createJsWithBabelPreset()
4143
},
4244
get jsWithBabelLegacy() {
43-
return createJestPreset(true, false, {
44-
transform: {
45-
'^.+\\.jsx?$': 'babel-jest',
46-
},
47-
})
45+
return createJsWithBabelLegacyPreset()
4846
},
4947
get jsWithBabelESM() {
5048
return createJsWithBabelEsmPreset()
5149
},
5250
get jsWithBabelESMLegacy() {
53-
return createJestPreset(true, false, {
54-
extensionsToTreatAsEsm: [...JS_EXT_TO_TREAT_AS_ESM, ...TS_EXT_TO_TREAT_AS_ESM],
55-
transform: {
56-
'^.+\\.m?[j]sx?$': 'babel-jest',
57-
},
58-
})
51+
return createJsWithBabelEsmLegacyPreset()
5952
},
6053
}

src/presets/__snapshots__/create-jest-preset.spec.ts.snap

+119-10
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`create-jest-preset CJS presets createDefaultPreset should return preset config 1`] = `
3+
exports[`create-jest-preset CJS presets createDefaultLegacyPreset should return preset config 1`] = `
44
{
55
"transform": {
66
"^.+.tsx?$": [
@@ -13,21 +13,37 @@ exports[`create-jest-preset CJS presets createDefaultPreset should return preset
1313
}
1414
`;
1515

16-
exports[`create-jest-preset CJS presets createJsWithTsPreset should return preset config 1`] = `
16+
exports[`create-jest-preset CJS presets createDefaultPreset should return preset config 1`] = `
1717
{
1818
"transform": {
19-
"^.+.[tj]sx?$": [
19+
"^.+.tsx?$": [
2020
"ts-jest",
2121
{
22-
"isolatedModules": true,
2322
"tsconfig": "tsconfig.spec.json",
2423
},
2524
],
2625
},
2726
}
2827
`;
2928

30-
exports[`create-jest-preset CJS presets createWithBabelPreset should return preset config 1`] = `
29+
exports[`create-jest-preset CJS presets createJsWithBabelLegacyPreset should return preset config 1`] = `
30+
{
31+
"transform": {
32+
"^.+.jsx?$": "babel-jest",
33+
"^.+.tsx?$": [
34+
"ts-jest/legacy",
35+
{
36+
"babelConfig": {
37+
"babelrc": true,
38+
},
39+
"tsconfig": "tsconfig.spec.json",
40+
},
41+
],
42+
},
43+
}
44+
`;
45+
46+
exports[`create-jest-preset CJS presets createJsWithBabelPreset should return preset config 1`] = `
3147
{
3248
"transform": {
3349
"^.+.jsx?$": "babel-jest",
@@ -44,6 +60,54 @@ exports[`create-jest-preset CJS presets createWithBabelPreset should return pres
4460
}
4561
`;
4662

63+
exports[`create-jest-preset CJS presets createJsWithTsLegacyPreset should return preset config 1`] = `
64+
{
65+
"transform": {
66+
"^.+.[tj]sx?$": [
67+
"ts-jest/legacy",
68+
{
69+
"isolatedModules": true,
70+
"tsconfig": "tsconfig.spec.json",
71+
},
72+
],
73+
},
74+
}
75+
`;
76+
77+
exports[`create-jest-preset CJS presets createJsWithTsPreset should return preset config 1`] = `
78+
{
79+
"transform": {
80+
"^.+.[tj]sx?$": [
81+
"ts-jest",
82+
{
83+
"isolatedModules": true,
84+
"tsconfig": "tsconfig.spec.json",
85+
},
86+
],
87+
},
88+
}
89+
`;
90+
91+
exports[`create-jest-preset ESM presets createDefaultEsmLegacyPreset should return preset config 1`] = `
92+
{
93+
"extensionsToTreatAsEsm": [
94+
".jsx",
95+
".ts",
96+
".tsx",
97+
".mts",
98+
],
99+
"transform": {
100+
"^.+\\.m?tsx?$": [
101+
"ts-jest/legacy",
102+
{
103+
"tsconfig": "tsconfig.spec.json",
104+
"useESM": true,
105+
},
106+
],
107+
},
108+
}
109+
`;
110+
47111
exports[`create-jest-preset ESM presets createDefaultEsmPreset should return preset config 1`] = `
48112
{
49113
"extensionsToTreatAsEsm": [
@@ -64,7 +128,7 @@ exports[`create-jest-preset ESM presets createDefaultEsmPreset should return pre
64128
}
65129
`;
66130

67-
exports[`create-jest-preset ESM presets createJsWithTsEsmPreset should return preset config 1`] = `
131+
exports[`create-jest-preset ESM presets createJsWithBabelEsmLegacyPreset should return preset config 1`] = `
68132
{
69133
"extensionsToTreatAsEsm": [
70134
".jsx",
@@ -73,10 +137,13 @@ exports[`create-jest-preset ESM presets createJsWithTsEsmPreset should return pr
73137
".mts",
74138
],
75139
"transform": {
76-
"^.+\\.m?[tj]sx?$": [
77-
"ts-jest",
140+
"^.+\\.m?jsx?$": "babel-jest",
141+
"^.+\\.m?tsx?$": [
142+
"ts-jest/legacy",
78143
{
79-
"isolatedModules": true,
144+
"babelConfig": {
145+
"babelrc": true,
146+
},
80147
"tsconfig": "tsconfig.spec.json",
81148
"useESM": true,
82149
},
@@ -85,7 +152,7 @@ exports[`create-jest-preset ESM presets createJsWithTsEsmPreset should return pr
85152
}
86153
`;
87154

88-
exports[`create-jest-preset ESM presets createWithBabelEsmPreset should return preset config 1`] = `
155+
exports[`create-jest-preset ESM presets createJsWithBabelEsmPreset should return preset config 1`] = `
89156
{
90157
"extensionsToTreatAsEsm": [
91158
".jsx",
@@ -109,6 +176,48 @@ exports[`create-jest-preset ESM presets createWithBabelEsmPreset should return p
109176
}
110177
`;
111178

179+
exports[`create-jest-preset ESM presets createJsWithTsEsmLegacyPreset should return preset config 1`] = `
180+
{
181+
"extensionsToTreatAsEsm": [
182+
".jsx",
183+
".ts",
184+
".tsx",
185+
".mts",
186+
],
187+
"transform": {
188+
"^.+\\.m?[tj]sx?$": [
189+
"ts-jest/legacy",
190+
{
191+
"isolatedModules": true,
192+
"tsconfig": "tsconfig.spec.json",
193+
"useESM": true,
194+
},
195+
],
196+
},
197+
}
198+
`;
199+
200+
exports[`create-jest-preset ESM presets createJsWithTsEsmPreset should return preset config 1`] = `
201+
{
202+
"extensionsToTreatAsEsm": [
203+
".jsx",
204+
".ts",
205+
".tsx",
206+
".mts",
207+
],
208+
"transform": {
209+
"^.+\\.m?[tj]sx?$": [
210+
"ts-jest",
211+
{
212+
"isolatedModules": true,
213+
"tsconfig": "tsconfig.spec.json",
214+
"useESM": true,
215+
},
216+
],
217+
},
218+
}
219+
`;
220+
112221
exports[`create-jest-preset createJestPreset should return correct preset 1`] = `
113222
{
114223
"transform": {

0 commit comments

Comments
 (0)