From 446b73043096fa66db95f1733729f9585d0d4693 Mon Sep 17 00:00:00 2001 From: The Jared Wilcurt Date: Sun, 19 Jan 2020 08:04:38 -0500 Subject: [PATCH] Add Jest-Serializer-Vue-TJW --- jest.config.js | 2 +- package-lock.json | 10 ++++++++++ package.json | 1 + tests/unit/serializer.js | 42 ---------------------------------------- tests/unit/setup.js | 1 + 5 files changed, 13 insertions(+), 43 deletions(-) delete mode 100644 tests/unit/serializer.js diff --git a/jest.config.js b/jest.config.js index 3fb01de..16e7437 100644 --- a/jest.config.js +++ b/jest.config.js @@ -21,7 +21,7 @@ module.exports = { '/tests/unit/setup.js' ], snapshotSerializers: [ - '/tests/unit/serializer.js' + '/node_modules/jest-serializer-vue-tjw' ], testEnvironment: 'jest-environment-jsdom-global', testMatch: [ diff --git a/package-lock.json b/package-lock.json index 60da71d..9e84b74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15616,6 +15616,16 @@ "pretty": "2.0.0" } }, + "jest-serializer-vue-tjw": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/jest-serializer-vue-tjw/-/jest-serializer-vue-tjw-3.3.0.tgz", + "integrity": "sha512-pvUqkwTYqmlHRuE6KtzNitBD5LRuuXgBt83cfSMabM9+QJEetm87nhIIAi4drDZeSOdkuVthBrcWE5E9AfUokw==", + "dev": true, + "requires": { + "lodash.clonedeep": "^4.5.0", + "pretty": "^2.0.0" + } + }, "jest-transform-stub": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/jest-transform-stub/-/jest-transform-stub-2.0.0.tgz", diff --git a/package.json b/package.json index 096e6a6..5cf0403 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "jest": "^24.9.0", "jest-environment-jsdom": "^24.9.0", "jest-environment-jsdom-global": "^1.2.0", + "jest-serializer-vue-tjw": "^3.3.0", "jest-transform-stub": "^2.0.0", "nw": "0.43.6-sdk", "nw-vue-devtools-prebuilt": "^0.0.10", diff --git a/tests/unit/serializer.js b/tests/unit/serializer.js deleted file mode 100644 index c5bf6e7..0000000 --- a/tests/unit/serializer.js +++ /dev/null @@ -1,42 +0,0 @@ -// Based on jest-serializer-vue - -const beautify = require('pretty'); - -function isHtmlString (received) { - return received && typeof(received) === 'string' && received.startsWith('<'); -} - -function isVueWrapper (received) { - return received && typeof(received) === 'object' && typeof(received.isVueInstance) === 'function'; -} - -// This removes data-test="whatever" from your snapshots -// If you also want to remove them from your production builds, see: -// https://forum.vuejs.org/t/how-to-remove-attributes-from-tags-inside-vue-components/24138 -function removeDataTestAttributes (html) { - // [-\w]+ will catch 1 or more instaces of a-z, A-Z, 0-9, hyphen (-), or underscore (_) - return html.replace(/ data-test="[-\w]+"/g, ''); -} - -module.exports = { - test: function (received) { - return isHtmlString(received) || isVueWrapper(received); - }, - print: function (received) { - let html = received || ''; - if (isVueWrapper(received)) { - html = received.html(); - } - html = removeDataTestAttributes(html); - // To see available options: https://github.com/beautify-web/js-beautify/blob/master/js/src/html/options.js - const options = { - indent_size: 2, - unformatted: ['code', 'pre'], - inline: [], - indent_inner_html: true, - indent_char: ' ', - sep: '\n' - }; - return beautify(html, options); - } -}; diff --git a/tests/unit/setup.js b/tests/unit/setup.js index ca81eec..d2e3468 100644 --- a/tests/unit/setup.js +++ b/tests/unit/setup.js @@ -22,6 +22,7 @@ window.getComputedStyle = function getComputedStyleStub (el) { global.beforeEach(() => { window.process = { + cwd: process.cwd, env: { NODE_ENV: 'development' },