Skip to content

Commit

Permalink
refactor: JsWithBabelPreset not compat with original transform type
Browse files Browse the repository at this point in the history
  • Loading branch information
ahnpnl committed Jul 5, 2024
1 parent 7d001be commit 5251354
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 38 deletions.
6 changes: 6 additions & 0 deletions e2e/presets/__tests__/presets.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { JS_EXT_TO_TREAT_AS_ESM, TS_EXT_TO_TREAT_AS_ESM } from 'ts-jest'
import presets from 'ts-jest/presets'

import extendedJestConfig from '../extended-jest-config'

const defaultPreset = require('ts-jest/jest-preset')

test('presets', () => {
Expand Down Expand Up @@ -75,3 +77,7 @@ test('presets', () => {
},
})
})

test('should allow extending jest config without type issues when using create preset util functions', () => {
expect(extendedJestConfig).toBeTruthy()
})
48 changes: 48 additions & 0 deletions e2e/presets/extended-jest-config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import {
createDefaultPreset,
createDefaultEsmPreset,
createJsWithTsPreset,
createJsWithTsEsmPreset,
createJsWithBabelPreset,
createJsWithBabelEsmPreset,
type JestConfigWithTsJest,
} from 'ts-jest'

const defaultPreset: JestConfigWithTsJest = {
...createDefaultPreset(),
testEnvironment: 'jsdom',
}

const defaultEsmPreset: JestConfigWithTsJest = {
...createDefaultEsmPreset(),
testEnvironment: 'jsdom',
}

const jsWithTsPreset: JestConfigWithTsJest = {
...createJsWithTsPreset(),
testEnvironment: 'jsdom',
}

const jsWithTsEsmPreset: JestConfigWithTsJest = {
...createJsWithTsEsmPreset(),
testEnvironment: 'jsdom',
}

const jsWithBabelPreset: JestConfigWithTsJest = {
...createJsWithBabelPreset(),
testEnvironment: 'jsdom',
}

const jsWithBabelEsmPreset: JestConfigWithTsJest = {
...createJsWithBabelEsmPreset(),
testEnvironment: 'jsdom',
}

export default {
defaultPreset,
defaultEsmPreset,
jsWithTsPreset,
jsWithTsEsmPreset,
jsWithBabelPreset,
jsWithBabelEsmPreset,
}
12 changes: 4 additions & 8 deletions src/cli/__snapshots__/cli.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ exports[`config init should create a jest config file with cli options for confi
module.exports = {
testEnvironment: "jsdom",
transform: {
"^.+.jsx?$": ["babel-jest",{}],
"^.+.jsx?$": "babel-jest",
},
};"
`;
Expand All @@ -35,7 +35,7 @@ exports[`config init should create a jest config file with cli options for confi
export default {
testEnvironment: "jsdom",
transform: {
"^.+.jsx?$": ["babel-jest",{}],
"^.+.jsx?$": "babel-jest",
},
};"
`;
Expand Down Expand Up @@ -81,15 +81,11 @@ exports[`config init should update package.json for config type js-with-babel-fu
"version": "0.0.0-mock.0",
"jest": {
"transform": {
"^.+.jsx?$": [
"babel-jest",
{}
],
"^.+.jsx?$": "babel-jest",
"^.+.tsx?$": [
"ts-jest",
{
"tsconfig": "tsconfig.test.json",
"babelConfig": true
"tsconfig": "tsconfig.test.json"
}
]
}
Expand Down
18 changes: 5 additions & 13 deletions src/presets/__snapshots__/create-jest-preset.spec.ts.snap
Original file line number Diff line number Diff line change
Expand Up @@ -30,16 +30,13 @@ exports[`create-jest-preset CJS presets createJsWithTsPreset should return prese
exports[`create-jest-preset CJS presets createWithBabelPreset should return preset config 1`] = `
{
"transform": {
"^.+.jsx?$": [
"babel-jest",
{
"babelrc": true,
},
],
"^.+.jsx?$": "babel-jest",
"^.+.tsx?$": [
"ts-jest",
{
"babelConfig": true,
"babelConfig": {
"babelrc": true,
},
"tsconfig": "tsconfig.spec.json",
},
],
Expand Down Expand Up @@ -97,12 +94,7 @@ exports[`create-jest-preset ESM presets createWithBabelEsmPreset should return p
".mts",
],
"transform": {
"^.+\\.m?jsx?$": [
"babel-jest",
{
"babelrc": true,
},
],
"^.+\\.m?jsx?$": "babel-jest",
"^.+\\.m?tsx?$": [
"ts-jest",
{
Expand Down
20 changes: 4 additions & 16 deletions src/presets/create-jest-preset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import {
ESM_JS_TRANSFORM_PATTERN,
} from '../constants'
import type {
BabelConfig,
DefaultPreset,
JsWithBabelPreset,
JsWithTsPreset,
Expand Down Expand Up @@ -78,18 +77,10 @@ export function createJsWithBabelPreset(
): JsWithBabelPreset {
logger.debug('creating JS with Babel CJS Jest preset')

const babelConfig = tsJestTransformOptions.babelConfig

return {
transform: {
[JS_TRANSFORM_PATTERN]: ['babel-jest', typeof babelConfig === 'object' ? babelConfig : {}],
[TS_TRANSFORM_PATTERN]: [
'ts-jest',
{
...tsJestTransformOptions,
babelConfig: true,
},
],
[JS_TRANSFORM_PATTERN]: 'babel-jest',
[TS_TRANSFORM_PATTERN]: ['ts-jest', tsJestTransformOptions],
},
}
}
Expand Down Expand Up @@ -141,24 +132,21 @@ export function createJsWithTsEsmPreset(tsJestTransformOptions: Omit<TsJestTrans
export function createJsWithBabelEsmPreset(tsJestTransformOptions: Omit<TsJestTransformerOptions, 'useESM'> = {}): {
extensionsToTreatAsEsm: string[]
transform: {
[ESM_JS_TRANSFORM_PATTERN]: ['babel-jest', babelConfig: BabelConfig]
[ESM_JS_TRANSFORM_PATTERN]: 'babel-jest'
[ESM_TS_TRANSFORM_PATTERN]: ['ts-jest', { useESM: true } & typeof tsJestTransformOptions]
}
} {
logger.debug('creating JS with Babel ESM Jest preset')

const babelConfig = tsJestTransformOptions.babelConfig

return {
extensionsToTreatAsEsm: [...JS_EXT_TO_TREAT_AS_ESM, ...TS_EXT_TO_TREAT_AS_ESM],
transform: {
[ESM_JS_TRANSFORM_PATTERN]: ['babel-jest', typeof babelConfig === 'object' ? babelConfig : {}],
[ESM_JS_TRANSFORM_PATTERN]: 'babel-jest',
[ESM_TS_TRANSFORM_PATTERN]: [
'ts-jest',
{
...tsJestTransformOptions,
useESM: true,
babelConfig,
},
],
},
Expand Down
2 changes: 1 addition & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ export type JsWithTsPreset = {
}
export type JsWithBabelPreset = {
transform: {
[JS_TRANSFORM_PATTERN]: ['babel-jest', babelConfig: BabelConfig]
[JS_TRANSFORM_PATTERN]: 'babel-jest'
[TS_TRANSFORM_PATTERN]: ['ts-jest', Omit<TsJestTransformerOptions, 'useESM'>]
}
}
Expand Down

0 comments on commit 5251354

Please sign in to comment.