From af89526ac1a5dfb8fdbb54c80de76355285a465e Mon Sep 17 00:00:00 2001
From: Wolfgang Walther <wolfgangwalther@users.noreply.github.com>
Date: Mon, 26 Sep 2022 02:49:11 +0200
Subject: [PATCH 1/2] fix: Revert vueOptionsNamespace changes from <script
setup> commit (#501)
* chore: Remove this. in <template> in test
Signed-off-by: Wolfgang Walther <walther@technowledgy.de>
* test: Add custom-block test for 2.x package
Signed-off-by: Wolfgang Walther <walther@technowledgy.de>
* fix: Revert vueOptionsNamespace changes from <script setup> commit
Signed-off-by: Wolfgang Walther <walther@technowledgy.de>
---
.../custom-block/__snapshots__/test.js.snap | 30 ++++++++++++++
e2e/2.x/custom-block/babel.config.js | 3 ++
e2e/2.x/custom-block/components/Basic.vue | 20 +++++++++
e2e/2.x/custom-block/components/Multiple.vue | 26 ++++++++++++
e2e/2.x/custom-block/package.json | 41 +++++++++++++++++++
e2e/2.x/custom-block/test.js | 33 +++++++++++++++
e2e/2.x/custom-block/transformer.js | 21 ++++++++++
.../custom-transformers/components/Scss.vue | 4 +-
.../vue2-jest/lib/process-custom-blocks.js | 5 ++-
packages/vue2-jest/lib/process.js | 5 ---
10 files changed, 179 insertions(+), 9 deletions(-)
create mode 100644 e2e/2.x/custom-block/__snapshots__/test.js.snap
create mode 100644 e2e/2.x/custom-block/babel.config.js
create mode 100644 e2e/2.x/custom-block/components/Basic.vue
create mode 100644 e2e/2.x/custom-block/components/Multiple.vue
create mode 100644 e2e/2.x/custom-block/package.json
create mode 100644 e2e/2.x/custom-block/test.js
create mode 100644 e2e/2.x/custom-block/transformer.js
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 @@
+<template>
+ <p>basic custom block</p>
+</template>
+
+<script>
+export default {
+ name: 'Basic'
+}
+</script>
+
+<custom>
+{
+ "en": {
+ "hello": "Hello!"
+ },
+ "ja": {
+ "hello": "こんにちは!"
+ }
+}
+</custom>
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 @@
+<template>
+ <p>multiple custom block</p>
+</template>
+
+<script>
+export default {
+ name: 'Multiple'
+}
+</script>
+
+<custom>
+{
+ "en": {
+ "hello": "Hello!"
+ },
+ "ja": {
+ "hello": "こんにちは!"
+ }
+}
+</custom>
+
+<custom>
+{
+ "foo": "foo"
+}
+</custom>
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/(.*)$": "<rootDir>/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 @@
<template>
<div>
- <span :class="this.$style.g"></span>
- <span :class="this.$style.dark.f"></span>
+ <span :class="$style.g"></span>
+ <span :class="$style.dark.f"></span>
</div>
</template>
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
)
From 62d6ebcc7b9c23dc9af2301cec73caf4e6a79071 Mon Sep 17 00:00:00 2001
From: Lachlan Miller <lachlan.miller.1990@outlook.com>
Date: Mon, 26 Sep 2022 10:50:30 +1000
Subject: [PATCH 2/2] publish: 29.1.1
---
packages/vue2-jest/package.json | 2 +-
packages/vue3-jest/package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
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": [