Skip to content

Commit 632622b

Browse files
committed
fix: make script setup & script blocks work together
1 parent 189f226 commit 632622b

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

packages/vue2-jest/lib/generate-code.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ module.exports = function generateCode(
2727
) {
2828
var node = new SourceNode(null, null)
2929

30-
const finalScriptResult = scriptResult || scriptSetupResult
31-
if (finalScriptResult) {
32-
addToSourceMap(node, finalScriptResult)
30+
if (scriptResult || scriptSetupResult) {
31+
scriptResult && addToSourceMap(node, scriptResult)
32+
scriptSetupResult && addToSourceMap(node, scriptSetupResult)
3333
} else {
3434
node.add(
3535
`Object.defineProperty(exports, "__esModule", {\n` +

packages/vue2-jest/lib/process-custom-blocks.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
const { getVueJestConfig, getCustomTransformer } = require('./utils')
2-
const vueOptionsNamespace = require('./constants').vueOptionsNamespace
32

43
function applyTransformer(
54
transformer,
@@ -17,7 +16,7 @@ function groupByType(acc, block) {
1716
return acc
1817
}
1918

20-
module.exports = function(allBlocks, filename, config) {
19+
module.exports = function(allBlocks, filename, componentNamespace, config) {
2120
const blocksByType = allBlocks.reduce(groupByType, {})
2221
const code = []
2322
for (const [type, blocks] of Object.entries(blocksByType)) {
@@ -29,7 +28,7 @@ module.exports = function(allBlocks, filename, config) {
2928
const codeStr = applyTransformer(
3029
transformer,
3130
blocks,
32-
vueOptionsNamespace,
31+
componentNamespace,
3332
filename,
3433
config
3534
)

packages/vue2-jest/lib/process.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ const loadSrc = require('./utils').loadSrc
1010
const babelTransformer = require('babel-jest').default
1111
const generateCode = require('./generate-code')
1212
const mapLines = require('./map-lines')
13+
const vueComponentNamespace = require('./constants').vueComponentNamespace
1314

1415
let isVue27 = false
1516
let compilerUtils
1617

1718
try {
18-
compilerUtils = require('@vue/compiler-sfc')
19+
compilerUtils = require('vue/compiler-sfc')
1920
isVue27 = true
2021
} catch (e) {
2122
compilerUtils = require('@vue/component-compiler-utils')
@@ -59,6 +60,7 @@ function processScriptSetup(descriptor, filePath, config) {
5960
const vueJestConfig = getVueJestConfig(config)
6061
const content = compilerUtils.compileScript(descriptor, {
6162
id: filePath,
63+
reactivityTransform: true,
6264
...vueJestConfig.compilerOptions
6365
})
6466
const contentMap = mapLines(descriptor.scriptSetup.map, content.map)
@@ -92,6 +94,7 @@ function processTemplate(descriptor, filename, config) {
9294
if (isVue27 && scriptSetup) {
9395
const scriptSetupResult = compilerUtils.compileScript(descriptor, {
9496
id: filename,
97+
reactivityTransform: true,
9598
...vueJestConfig.compilerOptions
9699
})
97100
bindings = scriptSetupResult.bindings
@@ -107,7 +110,7 @@ function processTemplate(descriptor, filename, config) {
107110
preprocessOptions: vueJestConfig[template.lang],
108111
...userTemplateCompilerOptions,
109112
compilerOptions: {
110-
optimize: false,
113+
...(!isVue27 ? { optimize: false } : {}),
111114
...userTemplateCompilerOptions.compilerOptions
112115
},
113116
...(isVue27 ? { bindings } : {})
@@ -136,17 +139,21 @@ function processStyle(styles, filename, config) {
136139
module.exports = function(src, filename, config) {
137140
const descriptor = compilerUtils.parse({
138141
source: src,
139-
compiler: VueTemplateCompiler,
142+
compiler: isVue27 ? undefined : VueTemplateCompiler,
140143
filename
141144
})
142145

146+
const componentNamespace =
147+
getVueJestConfig(config)['componentNamespace'] || vueComponentNamespace
148+
143149
const templateResult = processTemplate(descriptor, filename, config)
144150
const scriptResult = processScript(descriptor.script, filename, config)
145151
const scriptSetupResult = processScriptSetup(descriptor, filename, config)
146152
const stylesResult = processStyle(descriptor.styles, filename, config)
147153
const customBlocksResult = processCustomBlocks(
148154
descriptor.customBlocks,
149155
filename,
156+
componentNamespace,
150157
config
151158
)
152159

0 commit comments

Comments
 (0)