diff --git a/e2e/2.x/custom-block/__snapshots__/test.js.snap b/e2e/2.x/custom-block/__snapshots__/test.js.snap
new file mode 100644
index 00000000..ef2992b5
--- /dev/null
+++ b/e2e/2.x/custom-block/__snapshots__/test.js.snap
@@ -0,0 +1,30 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Basic 1`] = `
+[
+ {
+ "en": {
+ "hello": "Hello!",
+ },
+ "ja": {
+ "hello": "こんにちは!",
+ },
+ },
+]
+`;
+
+exports[`Multiple blocks 1`] = `
+[
+ {
+ "en": {
+ "hello": "Hello!",
+ },
+ "ja": {
+ "hello": "こんにちは!",
+ },
+ },
+ {
+ "foo": "foo",
+ },
+]
+`;
diff --git a/e2e/2.x/custom-block/babel.config.js b/e2e/2.x/custom-block/babel.config.js
new file mode 100644
index 00000000..7db9b6f5
--- /dev/null
+++ b/e2e/2.x/custom-block/babel.config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ presets: ['@babel/preset-env']
+}
diff --git a/e2e/2.x/custom-block/components/Basic.vue b/e2e/2.x/custom-block/components/Basic.vue
new file mode 100644
index 00000000..b40054ac
--- /dev/null
+++ b/e2e/2.x/custom-block/components/Basic.vue
@@ -0,0 +1,20 @@
+
+ basic custom block
+
+
+
+
+
+{
+ "en": {
+ "hello": "Hello!"
+ },
+ "ja": {
+ "hello": "こんにちは!"
+ }
+}
+
diff --git a/e2e/2.x/custom-block/components/Multiple.vue b/e2e/2.x/custom-block/components/Multiple.vue
new file mode 100644
index 00000000..f204d041
--- /dev/null
+++ b/e2e/2.x/custom-block/components/Multiple.vue
@@ -0,0 +1,26 @@
+
+ multiple custom block
+
+
+
+
+
+{
+ "en": {
+ "hello": "Hello!"
+ },
+ "ja": {
+ "hello": "こんにちは!"
+ }
+}
+
+
+
+{
+ "foo": "foo"
+}
+
diff --git a/e2e/2.x/custom-block/package.json b/e2e/2.x/custom-block/package.json
new file mode 100644
index 00000000..0b0442f6
--- /dev/null
+++ b/e2e/2.x/custom-block/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "vue2-custom-block",
+ "version": "1.0.0",
+ "license": "MIT",
+ "private": true,
+ "scripts": {
+ "test": "jest --no-cache --coverage test.js"
+ },
+ "dependencies": {
+ "vue": "^2.7.7",
+ "vue-template-compiler": "^2.7.7"
+ },
+ "devDependencies": {
+ "@babel/core": "^7.9.0",
+ "@babel/preset-env": "^7.9.0",
+ "@vue/vue2-jest": "^29.0.0",
+ "jest": "29.x",
+ "jest-environment-jsdom": "29.x"
+ },
+ "jest": {
+ "moduleFileExtensions": [
+ "js",
+ "json",
+ "vue"
+ ],
+ "transform": {
+ "^.+\\.js$": "babel-jest",
+ "^.+\\.vue$": "@vue/vue2-jest"
+ },
+ "moduleNameMapper": {
+ "^~?__styles/(.*)$": "/components/styles/$1"
+ },
+ "globals": {
+ "vue-jest": {
+ "transform": {
+ "custom": "./transformer.js"
+ }
+ }
+ }
+ }
+}
diff --git a/e2e/2.x/custom-block/test.js b/e2e/2.x/custom-block/test.js
new file mode 100644
index 00000000..79556a9c
--- /dev/null
+++ b/e2e/2.x/custom-block/test.js
@@ -0,0 +1,33 @@
+import Basic from './components/Basic.vue'
+import Multiple from './components/Multiple.vue'
+
+test('Basic', () => {
+ expect(Basic.__custom).toMatchObject([
+ {
+ en: {
+ hello: 'Hello!'
+ },
+ ja: {
+ hello: 'こんにちは!'
+ }
+ }
+ ])
+ expect(Basic.__custom).toMatchSnapshot()
+})
+
+test('Multiple blocks', () => {
+ expect(Multiple.__custom).toMatchObject([
+ {
+ en: {
+ hello: 'Hello!'
+ },
+ ja: {
+ hello: 'こんにちは!'
+ }
+ },
+ {
+ foo: 'foo'
+ }
+ ])
+ expect(Multiple.__custom).toMatchSnapshot()
+})
diff --git a/e2e/2.x/custom-block/transformer.js b/e2e/2.x/custom-block/transformer.js
new file mode 100644
index 00000000..b0266930
--- /dev/null
+++ b/e2e/2.x/custom-block/transformer.js
@@ -0,0 +1,21 @@
+function convert(content) {
+ return JSON.stringify(JSON.parse(content))
+ .replace(/\u2028/g, '\\u2028') // LINE SEPARATOR
+ .replace(/\u2029/g, '\\u2029') // PARAGRAPH SEPARATOR
+ .replace(/\\/g, '\\\\')
+ .replace(/'/g, "\\'")
+}
+
+module.exports = {
+ process({ blocks, vueOptionsNamespace, filename, config }) {
+ const ret = blocks.reduce((codes, block) => {
+ codes.push(
+ `${vueOptionsNamespace}.__custom = ${vueOptionsNamespace}.__custom || [];${vueOptionsNamespace}.__custom.push(${convert(
+ block.content
+ )});`
+ )
+ return codes
+ }, [])
+ return ret.join('')
+ }
+}
diff --git a/e2e/2.x/custom-transformers/components/Scss.vue b/e2e/2.x/custom-transformers/components/Scss.vue
index 6b88eb24..474edea9 100644
--- a/e2e/2.x/custom-transformers/components/Scss.vue
+++ b/e2e/2.x/custom-transformers/components/Scss.vue
@@ -1,7 +1,7 @@
-
-
+
+
diff --git a/packages/vue2-jest/lib/process-custom-blocks.js b/packages/vue2-jest/lib/process-custom-blocks.js
index a7e75fff..17516fa5 100644
--- a/packages/vue2-jest/lib/process-custom-blocks.js
+++ b/packages/vue2-jest/lib/process-custom-blocks.js
@@ -1,4 +1,5 @@
const { getVueJestConfig, getCustomTransformer } = require('./utils')
+const vueOptionsNamespace = require('./constants').vueOptionsNamespace
function applyTransformer(
transformer,
@@ -16,7 +17,7 @@ function groupByType(acc, block) {
return acc
}
-module.exports = function(allBlocks, filename, componentNamespace, config) {
+module.exports = function(allBlocks, filename, config) {
const blocksByType = allBlocks.reduce(groupByType, {})
const code = []
for (const [type, blocks] of Object.entries(blocksByType)) {
@@ -28,7 +29,7 @@ module.exports = function(allBlocks, filename, componentNamespace, config) {
const codeStr = applyTransformer(
transformer,
blocks,
- componentNamespace,
+ vueOptionsNamespace,
filename,
config
)
diff --git a/packages/vue2-jest/lib/process.js b/packages/vue2-jest/lib/process.js
index 6256144c..ebcdfdd8 100644
--- a/packages/vue2-jest/lib/process.js
+++ b/packages/vue2-jest/lib/process.js
@@ -10,7 +10,6 @@ const loadSrc = require('./utils').loadSrc
const babelTransformer = require('babel-jest').default
const generateCode = require('./generate-code')
const mapLines = require('./map-lines')
-const vueComponentNamespace = require('./constants').vueComponentNamespace
let isVue27 = false
let compilerUtils
@@ -143,9 +142,6 @@ module.exports = function(src, filename, config) {
filename
})
- const componentNamespace =
- getVueJestConfig(config)['componentNamespace'] || vueComponentNamespace
-
const templateResult = processTemplate(descriptor, filename, config)
const scriptResult = processScript(descriptor.script, filename, config)
const scriptSetupResult = processScriptSetup(descriptor, filename, config)
@@ -153,7 +149,6 @@ module.exports = function(src, filename, config) {
const customBlocksResult = processCustomBlocks(
descriptor.customBlocks,
filename,
- componentNamespace,
config
)
diff --git a/packages/vue2-jest/package.json b/packages/vue2-jest/package.json
index 559801d4..b9bb1a75 100644
--- a/packages/vue2-jest/package.json
+++ b/packages/vue2-jest/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/vue2-jest",
- "version": "29.1.0",
+ "version": "29.1.1",
"description": "Jest transformer for Vue 2",
"main": "lib/index.js",
"files": [
diff --git a/packages/vue3-jest/package.json b/packages/vue3-jest/package.json
index aa8cc824..fb96c4a8 100644
--- a/packages/vue3-jest/package.json
+++ b/packages/vue3-jest/package.json
@@ -1,6 +1,6 @@
{
"name": "@vue/vue3-jest",
- "version": "29.1.0",
+ "version": "29.1.1",
"description": "Jest Vue transform",
"main": "lib/index.js",
"files": [