Skip to content

Commit 3a0f4fe

Browse files
authored
feat: jest v27 support for vue2-jest (#368)
1 parent edf2633 commit 3a0f4fe

File tree

14 files changed

+87
-1187
lines changed

14 files changed

+87
-1187
lines changed

e2e/2.x/babel-in-package/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616
"@babel/preset-env": "^7.9.0",
1717
"@vue/test-utils": "^1.1.0",
1818
"coffeescript": "^2.3.2",
19-
"jest": "26.x",
20-
"ts-jest": "^26.3.0",
19+
"jest": "27.x",
20+
"ts-jest": "^27.0.4",
2121
"typescript": "^3.2.2",
22-
"vue2-jest": "~26.0.0"
22+
"vue2-jest": "~27.0.0-alpha.1"
2323
},
2424
"jest": {
25+
"testEnvironment": "jsdom",
2526
"moduleFileExtensions": [
2627
"js",
2728
"json",

e2e/2.x/basic/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,15 @@
1919
"babel-plugin-transform-vue-jsx": "^3.7.0",
2020
"coffeescript": "^2.3.2",
2121
"jade": "^1.11.0",
22-
"jest": "26.x",
22+
"jest": "27.x",
2323
"pug": "^3.0.1",
2424
"sass": "^1.23.7",
25-
"ts-jest": "^26.3.0",
25+
"ts-jest": "^27.0.4",
2626
"typescript": "^3.2.2",
27-
"vue2-jest": "~26.0.0"
27+
"vue2-jest": "~27.0.0-alpha.1"
2828
},
2929
"jest": {
30+
"testEnvironment": "jsdom",
3031
"moduleFileExtensions": [
3132
"js",
3233
"json",

e2e/2.x/basic/test.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,12 @@ test('handles named exports', () => {
3838
test('generates source maps for .vue files', () => {
3939
const filePath = resolve(__dirname, './components/Basic.vue')
4040
const fileString = readFileSync(filePath, { encoding: 'utf8' })
41+
const config = {
42+
moduleFileExtensions: ['js', 'vue']
43+
}
4144

4245
const { map } = jestVue.process(fileString, filePath, {
43-
moduleFileExtensions: ['js', 'vue']
46+
config
4447
})
4548

4649
expect(map).toMatchSnapshot()
@@ -50,8 +53,12 @@ test('generates source maps using src attributes', () => {
5053
const filePath = resolve(__dirname, './components/SourceMapsSrc.vue')
5154
const fileString = readFileSync(filePath, { encoding: 'utf8' })
5255

53-
const { map } = jestVue.process(fileString, filePath, {
56+
const config = {
5457
moduleFileExtensions: ['js', 'vue']
58+
}
59+
60+
const { map } = jestVue.process(fileString, filePath, {
61+
config
5562
})
5663

5764
expect(map).toMatchSnapshot()
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { createTransformer } = require('babel-jest')
1+
const { createTransformer } = require('babel-jest').default
22
module.exports = createTransformer({
33
presets: ['@babel/preset-env']
44
})

e2e/2.x/custom-transformers/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@
1414
"@babel/core": "^7.9.0",
1515
"@babel/preset-env": "^7.9.0",
1616
"@vue/test-utils": "^1.1.0",
17-
"babel-jest": "^26.6.3",
18-
"jest": "26.x",
17+
"babel-jest": "^27.0.6",
18+
"jest": "27.x",
1919
"postcss": "^7.0.13",
2020
"postcss-color-function": "^4.0.1",
2121
"sass": "^1.23.7",
22-
"vue2-jest": "~26.0.0"
22+
"vue2-jest": "~27.0.0-alpha.1"
2323
},
2424
"jest": {
25+
"testEnvironment": "jsdom",
2526
"moduleFileExtensions": [
2627
"js",
2728
"json",

e2e/2.x/style/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@
1414
"@babel/core": "^7.9.0",
1515
"@babel/preset-env": "^7.9.0",
1616
"@vue/test-utils": "^1.1.0",
17-
"jest": "26.x",
17+
"jest": "27.x",
1818
"less": "^3.9.0",
1919
"postcss": "^7.0.13",
2020
"sass": "^1.23.7",
2121
"stylus": "^0.54.5",
22-
"vue2-jest": "~26.0.0"
22+
"vue2-jest": "~27.0.0-alpha.1"
2323
},
2424
"jest": {
25+
"testEnvironment": "jsdom",
2526
"moduleFileExtensions": [
2627
"js",
2728
"json",

packages/vue2-jest/lib/index.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
const crypto = require('crypto')
2-
const babelJest = require('babel-jest')
3-
2+
const babelJest = require('babel-jest').default
43
module.exports = {
54
process: require('./process'),
65
getCacheKey: function getCacheKey(
76
fileData,
87
filename,
9-
configString,
10-
{ config, instrument, rootDir }
8+
{ config, configString, instrument, rootDir }
119
) {
1210
return crypto
1311
.createHash('md5')
1412
.update(
15-
babelJest.getCacheKey(fileData, filename, configString, {
13+
babelJest.getCacheKey(fileData, filename, {
1614
config,
15+
configString,
1716
instrument,
1817
rootDir
1918
}),

packages/vue2-jest/lib/process-style.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ module.exports = function processStyle(stylePart, filePath, config = {}) {
5656
const cssFilePath = applyModuleNameMapper(
5757
stylePart.src,
5858
filePath,
59-
config,
59+
config.config,
6060
stylePart.lang
6161
)
6262
stylePart.content = loadSrc(cssFilePath, filePath)
@@ -86,7 +86,7 @@ module.exports = function processStyle(stylePart, filePath, config = {}) {
8686
const preprocessOptions = getPreprocessOptions(
8787
stylePart.lang,
8888
filePath,
89-
config
89+
config.config
9090
)
9191
const result = compileStyle({
9292
source: content,

packages/vue2-jest/lib/process.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ const logResultErrors = require('./utils').logResultErrors
1010
const stripInlineSourceMap = require('./utils').stripInlineSourceMap
1111
const getCustomTransformer = require('./utils').getCustomTransformer
1212
const loadSrc = require('./utils').loadSrc
13-
const babelTransformer = require('babel-jest')
13+
const babelTransformer = require('babel-jest').default
1414
const compilerUtils = require('@vue/component-compiler-utils')
1515
const generateCode = require('./generate-code')
1616

packages/vue2-jest/lib/transformers/coffee.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const throwError = require('../utils').throwError
33
const getBabelOptions = require('../utils').getBabelOptions
44

55
module.exports = {
6-
process(src, filename, config) {
6+
process(src, filename) {
77
ensureRequire('coffee', ['coffeescript'])
88
const coffee = require('coffeescript')
99
const babelOptions = getBabelOptions(filename)

packages/vue2-jest/lib/transformers/typescript.js

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
const ensureRequire = require('../ensure-require')
2-
const babelJest = require('babel-jest')
2+
const babelJest = require('babel-jest').default
33
const {
4-
getBabelOptions,
54
getTsJestConfig,
65
stripInlineSourceMap,
76
getCustomTransformer,
@@ -14,35 +13,22 @@ module.exports = {
1413
const typescript = require('typescript')
1514
const vueJestConfig = getVueJestConfig(config)
1615
const tsconfig = getTsJestConfig(config)
17-
const babelOptions = getBabelOptions(filePath)
1816

19-
const res = typescript.transpileModule(scriptContent, tsconfig)
17+
const res = typescript.transpileModule(scriptContent, {
18+
...tsconfig,
19+
fileName: filePath
20+
})
2021

2122
res.outputText = stripInlineSourceMap(res.outputText)
2223

2324
const inputSourceMap =
2425
res.sourceMapText !== undefined ? JSON.parse(res.sourceMapText) : ''
2526

26-
// handle ES modules in TS source code in case user uses non commonjs module
27-
// output and there is no .babelrc.
28-
let inlineBabelOptions = {}
29-
if (
30-
tsconfig.compilerOptions.module !== typescript.ModuleKind.CommonJS &&
31-
!babelOptions
32-
) {
33-
inlineBabelOptions = {
34-
plugins: [require('@babel/plugin-transform-modules-commonjs')]
35-
}
36-
}
3727
const customTransformer =
3828
getCustomTransformer(vueJestConfig['transform'], 'js') || {}
3929
const transformer = customTransformer.process
4030
? customTransformer
41-
: babelJest.createTransformer(
42-
Object.assign(inlineBabelOptions, {
43-
inputSourceMap
44-
})
45-
)
31+
: babelJest.createTransformer({ inputSourceMap })
4632

4733
return transformer.process(res.outputText, filePath, config)
4834
}

packages/vue2-jest/lib/utils.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ const transformContent = function transformContent(
4848

4949
const getVueJestConfig = function getVueJestConfig(jestConfig) {
5050
return (
51-
(jestConfig && jestConfig.globals && jestConfig.globals['vue-jest']) || {}
51+
(jestConfig &&
52+
jestConfig.config &&
53+
jestConfig.config.globals &&
54+
jestConfig.config.globals['vue-jest']) ||
55+
{}
5256
)
5357
}
5458
const getBabelOptions = function loadBabelOptions(filename, options = {}) {
@@ -64,11 +68,12 @@ const getBabelOptions = function loadBabelOptions(filename, options = {}) {
6468
}
6569

6670
const getTsJestConfig = function getTsJestConfig(config) {
67-
const createTransformer = require('ts-jest').createTransformer
68-
const tr = createTransformer()
69-
const configSet = tr.configsFor(config)
71+
const { ConfigSet } = require('ts-jest/dist/config/config-set')
72+
const configSet = new ConfigSet(config.config)
7073
var tsConfig = configSet.typescript || configSet.parsedTsConfig
71-
return { compilerOptions: tsConfig.options }
74+
return {
75+
compilerOptions: { ...tsConfig.options, target: 'es5', module: 'commonjs' }
76+
}
7277
}
7378

7479
function isValidTransformer(transformer) {

packages/vue2-jest/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue2-jest",
3-
"version": "26.0.0",
3+
"version": "27.0.0-alpha.1",
44
"description": "Jest transformer for Vue 2",
55
"main": "lib/index.js",
66
"files": [
@@ -28,20 +28,20 @@
2828
"@babel/preset-env": "^7.9.0",
2929
"@vue/test-utils": "^1.1.0",
3030
"babel-core": "^7.0.0-bridge.0",
31-
"babel-jest": "^23.6.0",
31+
"babel-jest": "^27.0.6",
3232
"conventional-changelog": "^1.1.5",
33-
"jest": "^26.0.0",
33+
"jest": "^27.0.6",
3434
"semantic-release": "^15.13.2",
35-
"ts-jest": "^26.3.0",
35+
"ts-jest": "^27.0.4",
3636
"typescript": "^3.2.2",
3737
"vue": "^2.4.2",
3838
"vue-template-compiler": "^2.4.2"
3939
},
4040
"peerDependencies": {
4141
"@babel/core": "7.x",
42-
"babel-jest": ">= 24 < 27",
43-
"jest": "26.x",
44-
"ts-jest": ">= 24 < 27 ",
42+
"babel-jest": ">= 27 < 28",
43+
"jest": "27.x",
44+
"ts-jest": ">= 27 < 28",
4545
"vue": "^2.x",
4646
"vue-template-compiler": "^2.x"
4747
},

0 commit comments

Comments
 (0)