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": [