From 6dbf7ae74fedba2aa530c255aca842bccf333e57 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sun, 29 Jan 2023 14:20:37 +0100 Subject: [PATCH] chore: migrate to nuxt-vitest --- nuxt.config.ts | 2 + package.json | 5 +- pnpm-lock.yaml | 381 ++++++++++++++---- .../__snapshots__/content-rich.test.ts.snap | 164 ++++++++ .../__snapshots__/html-parse.test.ts.snap | 144 +++++++ tests/{ => nuxt}/content-rich.test.ts | 19 +- tests/{ => nuxt}/html-parse.test.ts | 0 tests/{ => nuxt}/html-to-text.test.ts | 0 tests/{ => unit}/language.test.ts | 0 tests/{ => unit}/permalinks.test.ts | 2 +- tests/{ => unit}/reorder-timeline.test.ts | 0 vitest.config.mjs | 4 +- 12 files changed, 619 insertions(+), 102 deletions(-) create mode 100644 tests/nuxt/__snapshots__/content-rich.test.ts.snap create mode 100644 tests/nuxt/__snapshots__/html-parse.test.ts.snap rename tests/{ => nuxt}/content-rich.test.ts (96%) rename tests/{ => nuxt}/html-parse.test.ts (100%) rename tests/{ => nuxt}/html-to-text.test.ts (100%) rename tests/{ => unit}/language.test.ts (100%) rename tests/{ => unit}/permalinks.test.ts (92%) rename tests/{ => unit}/reorder-timeline.test.ts (100%) diff --git a/nuxt.config.ts b/nuxt.config.ts index d6abd7ac..795c5473 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -25,6 +25,7 @@ export default defineNuxtConfig({ '@vue-macros/nuxt', '@nuxtjs/i18n', '@nuxtjs/color-mode', + 'nuxt-vitest', ...(isDevelopment || isWindows) ? [] : ['nuxt-security'], '~/modules/purge-comments', '~/modules/setup-components', @@ -66,6 +67,7 @@ export default defineNuxtConfig({ './composables/settings', './composables/tiptap/index.ts', ], + injectAtEnd: true, }, vite: { define: { diff --git a/package.json b/package.json index 69de14b3..b12d7a2c 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "lint-staged": "^13.1.0", "nuxt": "3.0.0", "nuxt-security": "^0.10.1", + "nuxt-vitest": "^0.6.4", "postcss-nested": "^6.0.0", "prettier": "^2.8.3", "rollup-plugin-node-polyfills": "^0.2.1", @@ -112,12 +113,12 @@ "std-env": "^3.3.1", "theme-vitesse": "^0.6.0", "typescript": "^4.9.4", - "unplugin-auto-import": "^0.12.1", + "unimport": "^2.1.0", + "unplugin-auto-import": "^0.13.0", "unplugin-vue-inspector": "^0.0.2", "vite-plugin-inspect": "^0.7.14", "vite-plugin-pwa": "^0.14.1", "vitest": "^0.28.1", - "vitest-environment-nuxt": "0.4.0", "vue-tsc": "^1.0.24", "workbox-build": "^6.5.4", "workbox-window": "^6.5.4" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cfaefc38..9a2827d3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -91,6 +91,7 @@ importers: masto: ^5.6.1 nuxt: 3.0.0 nuxt-security: ^0.10.1 + nuxt-vitest: ^0.6.4 pinia: ^2.0.29 postcss-nested: ^6.0.0 prettier: ^2.8.3 @@ -111,12 +112,12 @@ importers: typescript: ^4.9.4 ufo: ^1.0.1 ultrahtml: ^1.2.0 - unplugin-auto-import: ^0.12.1 + unimport: ^2.1.0 + unplugin-auto-import: ^0.13.0 unplugin-vue-inspector: ^0.0.2 vite-plugin-inspect: ^0.7.14 vite-plugin-pwa: ^0.14.1 vitest: ^0.28.1 - vitest-environment-nuxt: 0.4.0 vue-advanced-cropper: ^2.8.8 vue-tsc: ^1.0.24 vue-virtual-scroller: 2.0.0-beta.7 @@ -199,6 +200,7 @@ importers: lint-staged: 13.1.0 nuxt: 3.0.0_no2el4fe4ggitllzolcgczmlgq nuxt-security: 0.10.1 + nuxt-vitest: 0.6.4_jsdom@21.1.0 postcss-nested: 6.0.0 prettier: 2.8.3 rollup-plugin-node-polyfills: 0.2.1 @@ -208,12 +210,12 @@ importers: std-env: 3.3.1 theme-vitesse: 0.6.0 typescript: 4.9.4 - unplugin-auto-import: 0.12.1_@vueuse+core@9.11.1 + unimport: 2.1.0 + unplugin-auto-import: 0.13.0_@vueuse+core@9.11.1 unplugin-vue-inspector: 0.0.2 vite-plugin-inspect: 0.7.14 - vite-plugin-pwa: 0.14.1 - vitest: 0.28.1_jsdom@21.1.0 - vitest-environment-nuxt: 0.4.0_vitest@0.28.1 + vite-plugin-pwa: 0.14.1_tz3vz2xt4jvid2diblkpydcyn4 + vitest: 0.28.3_jsdom@21.1.0 vue-tsc: 1.0.24_typescript@4.9.4 workbox-build: 6.5.4 workbox-window: 6.5.4 @@ -2586,7 +2588,7 @@ packages: scule: 1.0.0 semver: 7.3.8 unctx: 2.1.1 - unimport: 2.0.1 + unimport: 2.1.0 untyped: 1.2.2 transitivePeerDependencies: - rollup @@ -2613,7 +2615,34 @@ packages: scule: 1.0.0 semver: 7.3.8 unctx: 2.1.1 - unimport: 2.0.1_rollup@3.10.1 + unimport: 2.1.0_rollup@3.10.1 + untyped: 1.2.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/kit/3.1.1: + resolution: {integrity: sha512-wmqVCIuD/te6BKf3YiqWyMumKI5JIpkiv0li/1Y3QHnTkoxyIhLkbFgNcQHuBxJ3eMlk2UjAjAqWiqBHTX54vQ==} + engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} + dependencies: + '@nuxt/schema': 3.1.1 + c12: 1.1.0 + consola: 2.15.3 + defu: 6.1.2 + globby: 13.1.3 + hash-sum: 2.0.0 + ignore: 5.2.4 + jiti: 1.16.2 + knitwork: 1.0.0 + lodash.template: 4.5.0 + mlly: 1.1.0 + pathe: 1.1.0 + pkg-types: 1.0.1 + scule: 1.0.0 + semver: 7.3.8 + unctx: 2.1.1 + unimport: 2.1.0 untyped: 1.2.2 transitivePeerDependencies: - rollup @@ -2677,7 +2706,7 @@ packages: scule: 1.0.0 std-env: 3.3.1 ufo: 1.0.1 - unimport: 2.0.1 + unimport: 2.1.0 untyped: 1.2.2 transitivePeerDependencies: - rollup @@ -2699,7 +2728,29 @@ packages: scule: 1.0.0 std-env: 3.3.1 ufo: 1.0.1 - unimport: 2.0.1_rollup@3.10.1 + unimport: 2.1.0_rollup@3.10.1 + untyped: 1.2.2 + transitivePeerDependencies: + - rollup + - supports-color + dev: true + + /@nuxt/schema/3.1.1: + resolution: {integrity: sha512-/KuoCDVGrLD9W7vwuYhu4HbdT/BpbrhA4Pm9dGn7Jah40kHDGqUnJxugvMjt+4suq53rLQyTA0LRDWfFxfxAOQ==} + engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} + dependencies: + c12: 1.1.0 + create-require: 1.1.1 + defu: 6.1.2 + hookable: 5.4.2 + jiti: 1.16.2 + pathe: 1.1.0 + pkg-types: 1.0.1 + postcss-import-resolver: 2.0.0 + scule: 1.0.0 + std-env: 3.3.1 + ufo: 1.0.1 + unimport: 2.1.0 untyped: 1.2.2 transitivePeerDependencies: - rollup @@ -2710,7 +2761,7 @@ packages: resolution: {integrity: sha512-mUyDqmB8GUJwTHVnwxuapeUHDSsUycOt+ZsA7GB6F8MOBJiVhQl/EeEAWoO2TUs0BPp2SlY9uO6eQihvxyLRqQ==} hasBin: true dependencies: - '@nuxt/kit': 3.1.0 + '@nuxt/kit': 3.1.1 chalk: 5.2.0 ci-info: 3.7.1 consola: 2.15.3 @@ -2759,7 +2810,7 @@ packages: externality: 1.0.0 fs-extra: 10.1.0 get-port-please: 2.6.1 - h3: 1.0.2 + h3: 1.1.0 knitwork: 1.0.0 magic-string: 0.26.7 mlly: 1.1.0 @@ -2817,7 +2868,7 @@ packages: externality: 1.0.0 fs-extra: 11.1.0 get-port-please: 3.0.1 - h3: 1.0.2 + h3: 1.1.0 knitwork: 1.0.0 magic-string: 0.27.0 mlly: 1.1.0 @@ -2858,8 +2909,8 @@ packages: /@nuxthq/studio/0.6.5: resolution: {integrity: sha512-kGb8abgTRJi0gcvTQcawEol5CR6uXS4bpCwEEk0+b3LSvyiM6k22Opb29KkSatprTkFrAPHDKSaUve8PiX22sw==} dependencies: - '@nuxt/kit': 3.1.0 - '@nuxt/schema': 3.0.0 + '@nuxt/kit': 3.1.1 + '@nuxt/schema': 3.1.1 defu: 6.1.2 nuxt-component-meta: 0.4.3 nuxt-config-schema: 0.4.4 @@ -2875,7 +2926,7 @@ packages: /@nuxtjs/color-mode/3.2.0: resolution: {integrity: sha512-isDR01yfadopiHQ/VEVUpyNSPrk5PCjUHS4t1qYRZwuRGefU4s9Iaxf6H9nmr1QFzoMgTm+3T0r/54jLwtpZbA==} dependencies: - '@nuxt/kit': 3.0.0 + '@nuxt/kit': 3.1.1 lodash.template: 4.5.0 pathe: 1.1.0 transitivePeerDependencies: @@ -2890,7 +2941,7 @@ packages: '@intlify/bundle-utils': 3.4.0_vue-i18n@9.3.0-beta.16 '@intlify/shared': 9.3.0-beta.11 '@intlify/unplugin-vue-i18n': 0.8.1_vue-i18n@9.3.0-beta.16 - '@nuxt/kit': 3.1.0 + '@nuxt/kit': 3.1.1 '@vue/compiler-sfc': 3.2.45 cookie-es: 0.5.0 debug: 4.3.4 @@ -2919,7 +2970,7 @@ packages: /@pinia/nuxt/0.4.6_typescript@4.9.4: resolution: {integrity: sha512-HjrYEfLdFpmsjhicPJgL36jVhzHWukIQPFFHGTSF84Cplu+f2nY2XHKqe9ToHzE9rLee2RjLOwAzOnXa/I/u6A==} dependencies: - '@nuxt/kit': 3.0.0 + '@nuxt/kit': 3.1.1 pinia: 2.0.29_typescript@4.9.4 transitivePeerDependencies: - '@vue/composition-api' @@ -3922,7 +3973,7 @@ packages: /@unocss/nuxt/0.48.5: resolution: {integrity: sha512-I5djnTENsxlyxaAagoOqgajz1HqzkeIPQXj2nyq1oTG94rWLpHMY+IX6LMyGl82Csj6Q/myijBDm538JR5Dnsg==} dependencies: - '@nuxt/kit': 3.0.0 + '@nuxt/kit': 3.1.1 '@unocss/config': 0.48.5 '@unocss/core': 0.48.5 '@unocss/preset-attributify': 0.48.5 @@ -4144,30 +4195,40 @@ packages: vue: 3.2.45 dev: true - /@vitest/expect/0.28.1: - resolution: {integrity: sha512-BOvWjBoocKrrTTTC0opIvzOEa7WR/Ovx4++QYlbjYKjnQJfWRSEQkTpAIEfOURtZ/ICcaLk5jvsRshXvjarZew==} + /@vitest/expect/0.28.3: + resolution: {integrity: sha512-dnxllhfln88DOvpAK1fuI7/xHwRgTgR4wdxHldPaoTaBu6Rh9zK5b//v/cjTkhOfNP/AJ8evbNO8H7c3biwd1g==} dependencies: - '@vitest/spy': 0.28.1 - '@vitest/utils': 0.28.1 + '@vitest/spy': 0.28.3 + '@vitest/utils': 0.28.3 chai: 4.3.7 dev: true - /@vitest/runner/0.28.1: - resolution: {integrity: sha512-kOdmgiNe+mAxZhvj2eUTqKnjfvzzknmrcS+SZXV7j6VgJuWPFAMCv3TWOe03nF9dkqDfVLCDRw/hwFuCzmzlQg==} + /@vitest/runner/0.28.3: + resolution: {integrity: sha512-P0qYbATaemy1midOLkw7qf8jraJszCoEvjQOSlseiXZyEDaZTZ50J+lolz2hWiWv6RwDu1iNseL9XLsG0Jm2KQ==} dependencies: - '@vitest/utils': 0.28.1 + '@vitest/utils': 0.28.3 p-limit: 4.0.0 pathe: 1.1.0 dev: true - /@vitest/spy/0.28.1: - resolution: {integrity: sha512-XGlD78cG3IxXNnGwEF121l0MfTNlHSdI25gS2ik0z6f/D9wWUOru849QkJbuNl4CMlZCtNkx3b5IS6MRwKGKuA==} + /@vitest/spy/0.28.3: + resolution: {integrity: sha512-jULA6suS6CCr9VZfr7/9x97pZ0hC55prnUNHNrg5/q16ARBY38RsjsfhuUXt6QOwvIN3BhSS0QqPzyh5Di8g6w==} dependencies: tinyspy: 1.0.2 dev: true - /@vitest/utils/0.28.1: - resolution: {integrity: sha512-a7cV1fs5MeU+W+8sn8gM9gV+q7V/wYz3/4y016w/icyJEKm9AMdSHnrzxTWaElJ07X40pwU6m5353Jlw6Rbd8w==} + /@vitest/ui/0.28.3: + resolution: {integrity: sha512-pbr9VySq2PJhaQP06Fq9c6Ra1wSUY1gnNEVhuwVU1yhqz78WdsO3rqREu7GSqEpAr6oZfwpBOUVzW87C2lNGYw==} + dependencies: + fast-glob: 3.2.12 + flatted: 3.2.7 + pathe: 1.1.0 + picocolors: 1.0.0 + sirv: 2.0.2 + dev: true + + /@vitest/utils/0.28.3: + resolution: {integrity: sha512-YHiQEHQqXyIbhDqETOJUKx9/psybF7SFFVCNfOvap0FvyUqbzTSDCa3S5lL4C0CLXkwVZttz9xknDoyHMguFRQ==} dependencies: cli-truncate: 3.1.0 diff: 5.1.0 @@ -4355,7 +4416,7 @@ packages: peerDependencies: nuxt: ^3.0.0 dependencies: - '@nuxt/kit': 3.1.0 + '@nuxt/kit': 3.1.1 '@vue-macros/short-vmodel': 1.0.5 '@vue-macros/volar': 0.6.2_vue-tsc@1.0.24 nuxt: 3.0.0_no2el4fe4ggitllzolcgczmlgq @@ -4570,10 +4631,13 @@ packages: resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==} dev: true - /@vue/test-utils/2.2.7: - resolution: {integrity: sha512-BMuoruUFTEqhLoOgsMcgNVMiByYbfHCKGr2C4CPdGtz/affUtDVX5zr1RnPuq0tYSiaqq+Enw5voUpG6JY8Q7g==} + /@vue/test-utils/2.2.8: + resolution: {integrity: sha512-/R8DKzp41Ip/RqTt1jvOVi5gxby3EwNWiYHNYsG9FAjEvt0gzDvYN55lCKzX7IdnI5zVIOo5tHtts0SLT+JrWw==} peerDependencies: + '@vue/compiler-dom': ^3.0.1 vue: ^3.0.1 + dependencies: + js-beautify: 1.14.6 dev: true /@vueuse/core/8.9.4: @@ -4719,7 +4783,7 @@ packages: peerDependencies: nuxt: ^3.0.0 dependencies: - '@nuxt/kit': 3.0.0 + '@nuxt/kit': 3.1.1 '@vueuse/core': 9.11.1 '@vueuse/metadata': 9.11.1 local-pkg: 0.4.3 @@ -4737,7 +4801,7 @@ packages: peerDependencies: nuxt: ^3.0.0 dependencies: - '@nuxt/kit': 3.0.0 + '@nuxt/kit': 3.1.1 '@vueuse/core': 9.11.1 '@vueuse/metadata': 9.11.1 local-pkg: 0.4.3 @@ -5631,6 +5695,13 @@ packages: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} dev: true + /config-chain/1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: true + /consola/2.15.3: resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} @@ -6107,6 +6178,16 @@ packages: resolution: {integrity: sha512-GJRqdiy2h+EXy6a8E6R+ubmqUM08BK0FWNq41k24fup6045biQ8NXxoXimiwegMQvFFV3t1emADdGNL1TlS61A==} dev: false + /editorconfig/0.15.3: + resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==} + hasBin: true + dependencies: + commander: 2.20.3 + lru-cache: 4.1.5 + semver: 5.7.1 + sigmund: 1.0.1 + dev: true + /ee-first/1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true @@ -7534,8 +7615,8 @@ packages: duplexer: 0.1.2 dev: true - /h3/1.0.2: - resolution: {integrity: sha512-25QqjQMz8pX1NI2rZ/ziNT9B8Aog7jmu2a0o8Qm9kKoH3zOhE+2icVs069h6DEp0g1Dst1+zKfRdRYcK0MogJA==} + /h3/1.1.0: + resolution: {integrity: sha512-kx3u+RMzY963fU8NNT2ePWgsryAn9DNztPqbHia/M7HgA+rtXKjHjED9/uidcYPmImNwAfJsCachCzh2T3QH2A==} dependencies: cookie-es: 0.5.0 destr: 1.2.2 @@ -7543,8 +7624,8 @@ packages: ufo: 1.0.1 dev: true - /happy-dom/8.1.5: - resolution: {integrity: sha512-/UXAJ2fHTs4H3vy7TS7c9PKFvPyaNialk2Er9NdXfpBKNaCITMOH03rkjHXp5jnJnSmRBa+av8E08PUAaIB1jQ==} + /happy-dom/8.2.0: + resolution: {integrity: sha512-SBMi/ht8zvtXNuSVpXJu+hOEJtNEbM4CxQukcHMm7FCd1sMuitfESwUMX83gl3C2JcEGLcpx/+JnF+rjGl27+A==} dependencies: css.escape: 1.5.1 he: 1.2.0 @@ -8256,6 +8337,17 @@ packages: hasBin: true dev: true + /js-beautify/1.14.6: + resolution: {integrity: sha512-GfofQY5zDp+cuHc+gsEXKPpNw2KbPddreEo35O6jT6i0RVK6LhsoYBhq5TvK4/n74wnA0QbK8gGd+jUZwTMKJw==} + engines: {node: '>=10'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 0.15.3 + glob: 8.1.0 + nopt: 6.0.0 + dev: true + /js-cookie/3.0.1: resolution: {integrity: sha512-+0rgsUXZu4ncpPxRL+lNEptWMOWl9etvPHc/koSRp6MPwpRYAhmk0dUG00J4bxVV3r9uUzfo24wW0knS07SKSw==} engines: {node: '>=12'} @@ -8653,6 +8745,13 @@ packages: dependencies: tslib: 2.4.1 + /lru-cache/4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + dev: true + /lru-cache/5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: @@ -9392,7 +9491,7 @@ packages: fs-extra: 10.1.0 globby: 13.1.3 gzip-size: 7.0.0 - h3: 1.0.2 + h3: 1.1.0 hookable: 5.4.2 http-proxy: 1.18.1 is-primitive: 3.0.1 @@ -9421,7 +9520,7 @@ packages: source-map-support: 0.5.21 std-env: 3.3.1 ufo: 1.0.1 - unenv: 1.0.1 + unenv: 1.0.2 unimport: 1.3.0_rollup@2.79.1 unstorage: 1.0.1 transitivePeerDependencies: @@ -9464,7 +9563,7 @@ packages: fs-extra: 11.1.0 globby: 13.1.3 gzip-size: 7.0.0 - h3: 1.0.2 + h3: 1.1.0 hookable: 5.4.2 http-proxy: 1.18.1 is-primitive: 3.0.1 @@ -9492,7 +9591,7 @@ packages: source-map-support: 0.5.21 std-env: 3.3.1 ufo: 1.0.1 - unenv: 1.0.1 + unenv: 1.0.2 unimport: 1.3.0_rollup@3.10.1 unstorage: 1.0.1 transitivePeerDependencies: @@ -9570,6 +9669,14 @@ packages: abbrev: 1.1.1 dev: true + /nopt/6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + abbrev: 1.1.1 + dev: true + /normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} dependencies: @@ -9640,7 +9747,7 @@ packages: /nuxt-component-meta/0.4.3: resolution: {integrity: sha512-40wsnbCh2neNdKVrwSiqV/ea7QshYjp3kpfk8JZaxSW/XcgNg2tzka4L+M8caOvQalyAKi6AaENPLaTYOZDbQg==} dependencies: - '@nuxt/kit': 3.1.0 + '@nuxt/kit': 3.1.1 scule: 1.0.0 typescript: 4.9.4 vue-component-meta: 1.0.24_typescript@4.9.4 @@ -9652,7 +9759,7 @@ packages: /nuxt-config-schema/0.4.4: resolution: {integrity: sha512-5NnyyH2qSgraQo6kcW/8SWqBZ/pEY/PwyepODPWYYv4ZZ8BiqC850OTmyO2oTBL4O+Xg4fR7hAwSB4g5pIMpSg==} dependencies: - '@nuxt/kit': 3.1.0 + '@nuxt/kit': 3.1.1 changelogen: 0.4.1 defu: 6.1.2 jiti: 1.16.2 @@ -9667,7 +9774,7 @@ packages: resolution: {integrity: sha512-Tv1oh33oLJfFDhQ5nMZ8I5vspbg7A8JTW7sVtD58gDkHfFzEHXBcXz7OesFZZQvKPwBWSKhBLgIenbFu5Jkzlw==} dependencies: '@iconify/vue': 4.0.2 - '@nuxt/kit': 3.1.0 + '@nuxt/kit': 3.1.1 nuxt-config-schema: 0.4.4 transitivePeerDependencies: - rollup @@ -9679,7 +9786,7 @@ packages: resolution: {integrity: sha512-Aqz+LM7pWAEismEJqhSPkihX+njX1bIJd62ygJfQuwyWWDD3EuUHJR5BxuPNd8KakT9MNhtM3AZ7bg0g/gqyqg==} dependencies: '@nozomuikuta/h3-cors': 0.1.8_defu@6.1.2 - '@nuxt/kit': 3.0.0 + '@nuxt/kit': 3.1.1 basic-auth: 2.0.1 defu: 6.1.2 limiter: 2.1.0 @@ -9692,6 +9799,35 @@ packages: - supports-color dev: true + /nuxt-vitest/0.6.4_jsdom@21.1.0: + resolution: {integrity: sha512-38hQlqs1Fx6PjBnxnAk2la+z7KFaU4aTNTas0GcvSJ2GoPdVXienPTkLeiYeNWr0/2cQ1LGfR8ZVXFlldvJIFA==} + peerDependencies: + vite: '*' + dependencies: + '@nuxt/kit': 3.1.1 + '@vitest/ui': 0.28.3 + get-port-please: 3.0.1 + perfect-debounce: 0.1.3 + std-env: 3.3.1 + vitest: 0.28.3_a7aimjszcawcicrmfep77vgtlm + vitest-environment-nuxt: 0.6.4_vitest@0.28.3 + transitivePeerDependencies: + - '@edge-runtime/vm' + - '@vitest/browser' + - '@vue/compiler-dom' + - encoding + - happy-dom + - jsdom + - less + - rollup + - sass + - stylus + - sugarss + - supports-color + - terser + - vue + dev: true + /nuxt/3.0.0_no2el4fe4ggitllzolcgczmlgq: resolution: {integrity: sha512-RNlD78uv04ZiXWmlx9f1tnJfrqsYAWHU+4gbgOTQpIBmQzHWPWiox+fm/1m93iKfEd5sJi9TJUoXX5yBObVZYw==} engines: {node: ^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0} @@ -9715,7 +9851,7 @@ packages: estree-walker: 3.0.3 fs-extra: 10.1.0 globby: 13.1.3 - h3: 1.0.2 + h3: 1.1.0 hash-sum: 2.0.0 hookable: 5.4.2 knitwork: 1.0.0 @@ -9732,7 +9868,7 @@ packages: ufo: 1.0.1 ultrahtml: 1.2.0 unctx: 2.1.1 - unenv: 1.0.1 + unenv: 1.0.2 unhead: 1.0.18 unimport: 1.3.0 unplugin: 1.0.1 @@ -9787,7 +9923,7 @@ packages: estree-walker: 3.0.3 fs-extra: 11.1.0 globby: 13.1.3 - h3: 1.0.2 + h3: 1.1.0 hash-sum: 2.0.0 hookable: 5.4.2 jiti: 1.16.2 @@ -9805,9 +9941,9 @@ packages: ufo: 1.0.1 ultrahtml: 1.2.0 unctx: 2.1.1 - unenv: 1.0.1 + unenv: 1.0.2 unhead: 1.0.18 - unimport: 2.0.1 + unimport: 2.1.0 unplugin: 1.0.1 untyped: 1.2.2 vue: 3.2.45 @@ -10749,6 +10885,10 @@ packages: prosemirror-transform: 1.7.1 dev: false + /proto-list/1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: true + /protocols/2.0.1: resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} dev: true @@ -10757,6 +10897,10 @@ packages: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} dev: true + /pseudomap/1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + dev: true + /psl/1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} dev: true @@ -11419,6 +11563,10 @@ packages: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} dev: true + /sigmund/1.0.1: + resolution: {integrity: sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==} + dev: true + /signal-exit/3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -11940,8 +12088,8 @@ packages: resolution: {integrity: sha512-h80m9GPFGbcLzZByXlNSEhp1gf8Dy+VX/2JCGUZsWLo7lV1mnE/XlxGYgRBoMLJh1lIDXP0EMC4RPTjlRaV+Bg==} dev: true - /tinypool/0.3.0: - resolution: {integrity: sha512-NX5KeqHOBZU6Bc0xj9Vr5Szbb1j8tUHIeD18s41aDJaPeC5QTdEhK0SpdpUrZlj2nv5cctNcSjaKNanXlfcVEQ==} + /tinypool/0.3.1: + resolution: {integrity: sha512-zLA1ZXlstbU2rlpA4CIeVaqvWq41MTWqLY3FfsAXgC8+f7Pk7zroaJQxDgxn1xNudKW6Kmj4808rPFShUlIRmQ==} engines: {node: '>=14.0.0'} dev: true @@ -12208,8 +12356,8 @@ packages: busboy: 1.6.0 dev: true - /unenv/1.0.1: - resolution: {integrity: sha512-08MoQ5+Edg9ckEP5y6vT8R6sOgCsNPxwPA1mKIOyergTtPOOuSyyJnbmF8CdnUplO2TUqSm0s1IysCkylxmndw==} + /unenv/1.0.2: + resolution: {integrity: sha512-senf7HmOHW3TuVCdhnrJcgVWabKnaU38oTRpppwWF0L6dJyfedY4MCiJeuwtrziqURZHuI2xxUoM90VLwG+e2Q==} dependencies: defu: 6.1.2 mime: 3.0.0 @@ -12314,8 +12462,8 @@ packages: - rollup dev: true - /unimport/2.0.1: - resolution: {integrity: sha512-hMeDspGrEcocahicTr0AQYUGes24FvJtOxk9QEjeEOGv+n1EdpsDiT6z8t209PWhemPg0T5w/ooTVhup2GdrFA==} + /unimport/2.1.0: + resolution: {integrity: sha512-GDVIxATluUquX8EqelT6DtnmnZaXGID1jsO9IXwlnxb0OIEqKAxTOnTlnGmHbseoGTh+ZC9kcNDaO18HYQj9KA==} dependencies: '@rollup/pluginutils': 5.0.2 escape-string-regexp: 5.0.0 @@ -12332,8 +12480,8 @@ packages: - rollup dev: true - /unimport/2.0.1_rollup@3.10.1: - resolution: {integrity: sha512-hMeDspGrEcocahicTr0AQYUGes24FvJtOxk9QEjeEOGv+n1EdpsDiT6z8t209PWhemPg0T5w/ooTVhup2GdrFA==} + /unimport/2.1.0_rollup@3.10.1: + resolution: {integrity: sha512-GDVIxATluUquX8EqelT6DtnmnZaXGID1jsO9IXwlnxb0OIEqKAxTOnTlnGmHbseoGTh+ZC9kcNDaO18HYQj9KA==} dependencies: '@rollup/pluginutils': 5.0.2_rollup@3.10.1 escape-string-regexp: 5.0.0 @@ -12455,8 +12603,8 @@ packages: - vite dev: true - /unplugin-auto-import/0.12.1_@vueuse+core@9.11.1: - resolution: {integrity: sha512-J/3ZORq5YGKG+8D5vLLOgqaHNK77izlVN07mQ752yRLqBNDbJiwPRSnUwwYqH5N6rDay1SqnJCHaUdbJ9QMI2w==} + /unplugin-auto-import/0.13.0_@vueuse+core@9.11.1: + resolution: {integrity: sha512-nKMxDbkjM4FRPInFfm7sWrJOKgxfKKwb5yLPP+DEGl/SG0/FtBoW1LnZL4PQfx0FXjertoHO1P/5nDf+RSip2Q==} engines: {node: '>=14'} peerDependencies: '@vueuse/core': '*' @@ -12469,7 +12617,7 @@ packages: '@vueuse/core': 9.11.1 local-pkg: 0.4.3 magic-string: 0.27.0 - unimport: 1.3.0 + unimport: 2.1.0 unplugin: 1.0.1 transitivePeerDependencies: - rollup @@ -12567,7 +12715,7 @@ packages: anymatch: 3.1.3 chokidar: 3.5.3 destr: 1.2.2 - h3: 1.0.2 + h3: 1.1.0 ioredis: 5.2.5 listhen: 1.0.1 mkdir: 0.0.2 @@ -12735,8 +12883,8 @@ packages: - terser dev: true - /vite-node/0.28.1_@types+node@18.11.18: - resolution: {integrity: sha512-Mmab+cIeElkVn4noScCRjy8nnQdh5LDIR4QCH/pVWtY15zv5Z1J7u6/471B9JZ2r8CEIs42vTbngaamOVkhPLA==} + /vite-node/0.28.3_@types+node@18.11.18: + resolution: {integrity: sha512-uJJAOkgVwdfCX8PUQhqLyDOpkBS5+j+FdbsXoPVPDlvVjRkb/W/mLYQPSL6J+t8R0UV8tJSe8c9VyxVQNsDSyg==} engines: {node: '>=v14.16.0'} hasBin: true dependencies: @@ -12877,10 +13025,12 @@ packages: - supports-color dev: true - /vite-plugin-pwa/0.14.1: + /vite-plugin-pwa/0.14.1_tz3vz2xt4jvid2diblkpydcyn4: resolution: {integrity: sha512-5zx7yhQ8RTLwV71+GA9YsQQ63ALKG8XXIMqRJDdZkR8ZYftFcRgnzM7wOWmQZ/DATspyhPih5wCdcZnAIsM+mA==} peerDependencies: vite: ^3.1.0 || ^4.0.0 + workbox-build: ^6.5.4 + workbox-window: ^6.5.4 dependencies: '@rollup/plugin-replace': 5.0.2_rollup@3.10.1 debug: 4.3.4 @@ -12890,7 +13040,6 @@ packages: workbox-build: 6.5.4 workbox-window: 6.5.4 transitivePeerDependencies: - - '@types/babel__core' - supports-color dev: true @@ -13046,29 +13195,30 @@ packages: fsevents: 2.3.2 dev: true - /vitest-environment-nuxt/0.4.0_vitest@0.28.1: - resolution: {integrity: sha512-uRg/jvgHjzUGhkWTWtFEUlImfA3VScZG2EGlRvQk9ODspUw0a9hTz9Yz9tXQTsChoE2n7yi44TJdCVmK7iHxUA==} + /vitest-environment-nuxt/0.6.4_vitest@0.28.3: + resolution: {integrity: sha512-cM65pFMFf6xJzF7pTwGKd092yV96brzaK7PoYs60DzL1pe8WJNPKuoQTtf2409mlA07dI7U4MxS5Pnwe4hWbzQ==} peerDependencies: - vitest: ^0.24.5 || ^0.26.0 || ^0.27.0 + vitest: ^0.24.5 || ^0.26.0 || ^0.27.0 || ^0.28.0 vue: ^3.2.45 dependencies: - '@nuxt/kit': 3.0.0 - '@vue/test-utils': 2.2.7 + '@nuxt/kit': 3.1.1 + '@vue/test-utils': 2.2.8 estree-walker: 3.0.3 - h3: 1.0.2 - happy-dom: 8.1.5 + h3: 1.1.0 + happy-dom: 8.2.0 magic-string: 0.27.0 ofetch: 1.0.0 - unenv: 1.0.1 - vitest: 0.28.1_jsdom@21.1.0 + unenv: 1.0.2 + vitest: 0.28.3_a7aimjszcawcicrmfep77vgtlm transitivePeerDependencies: + - '@vue/compiler-dom' - encoding - rollup - supports-color dev: true - /vitest/0.28.1_jsdom@21.1.0: - resolution: {integrity: sha512-F6wAO3K5+UqJCCGt0YAl3Ila2f+fpBrJhl9n7qWEhREwfzQeXlMkkCqGqGtzBxCSa8kv5QHrkshX8AaPTXYACQ==} + /vitest/0.28.3_a7aimjszcawcicrmfep77vgtlm: + resolution: {integrity: sha512-N41VPNf3VGJlWQizGvl1P5MGyv3ZZA2Zvh+2V8L6tYBAAuqqDK4zExunT1Cdb6dGfZ4gr+IMrnG8d4Z6j9ctPw==} engines: {node: '>=v14.16.0'} hasBin: true peerDependencies: @@ -13092,10 +13242,11 @@ packages: '@types/chai': 4.3.4 '@types/chai-subset': 1.3.3 '@types/node': 18.11.18 - '@vitest/expect': 0.28.1 - '@vitest/runner': 0.28.1 - '@vitest/spy': 0.28.1 - '@vitest/utils': 0.28.1 + '@vitest/expect': 0.28.3 + '@vitest/runner': 0.28.3 + '@vitest/spy': 0.28.3 + '@vitest/ui': 0.28.3 + '@vitest/utils': 0.28.3 acorn: 8.8.2 acorn-walk: 8.2.0 cac: 6.7.14 @@ -13109,10 +13260,66 @@ packages: std-env: 3.3.1 strip-literal: 1.0.0 tinybench: 2.3.1 - tinypool: 0.3.0 + tinypool: 0.3.1 tinyspy: 1.0.2 vite: 3.2.5_@types+node@18.11.18 - vite-node: 0.28.1_@types+node@18.11.18 + vite-node: 0.28.3_@types+node@18.11.18 + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vitest/0.28.3_jsdom@21.1.0: + resolution: {integrity: sha512-N41VPNf3VGJlWQizGvl1P5MGyv3ZZA2Zvh+2V8L6tYBAAuqqDK4zExunT1Cdb6dGfZ4gr+IMrnG8d4Z6j9ctPw==} + engines: {node: '>=v14.16.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/chai': 4.3.4 + '@types/chai-subset': 1.3.3 + '@types/node': 18.11.18 + '@vitest/expect': 0.28.3 + '@vitest/runner': 0.28.3 + '@vitest/spy': 0.28.3 + '@vitest/utils': 0.28.3 + acorn: 8.8.2 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.7 + debug: 4.3.4 + jsdom: 21.1.0 + local-pkg: 0.4.3 + pathe: 1.1.0 + picocolors: 1.0.0 + source-map: 0.6.1 + std-env: 3.3.1 + strip-literal: 1.0.0 + tinybench: 2.3.1 + tinypool: 0.3.1 + tinyspy: 1.0.2 + vite: 3.2.5_@types+node@18.11.18 + vite-node: 0.28.3_@types+node@18.11.18 why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -13699,6 +13906,10 @@ packages: engines: {node: '>=10'} dev: true + /yallist/2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + dev: true + /yallist/3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} dev: true diff --git a/tests/nuxt/__snapshots__/content-rich.test.ts.snap b/tests/nuxt/__snapshots__/content-rich.test.ts.snap new file mode 100644 index 00000000..289bfb73 --- /dev/null +++ b/tests/nuxt/__snapshots__/content-rich.test.ts.snap @@ -0,0 +1,164 @@ +// Vitest Snapshot v1 + +exports[`content-rich > block with backticks 1`] = `"

[(\`number string) (\`tag string)]

"`; + +exports[`content-rich > block with injected html, with a known language 1`] = ` +"
+        
+          <a href="javascript:alert(1)">click me</a>
+        
+      
+" +`; + +exports[`content-rich > block with injected html, with an unknown language 1`] = ` +"
+        
+          <a href="javascript:alert(1)">click me</a>
+        
+      
+" +`; + +exports[`content-rich > block with injected html, without language 1`] = ` +"
+        
+          <a href="javascript:alert(1)">click me</a>
+        
+      
+" +`; + +exports[`content-rich > code frame 1`] = ` +"

Testing code block

import { useMouse, usePreferredDark } from '@vueuse/core'
+// tracks mouse position
+const { x, y } = useMouse()
+// is the user prefers dark theme
+const isDark = usePreferredDark()

" +`; + +exports[`content-rich > code frame 2 1`] = ` +"

+ + Testing
+

const a = hello
+

+" +`; + +exports[`content-rich > code frame empty 1`] = `"


"`; + +exports[`content-rich > code frame no lang 1`] = `"

hello world

no lang

"`; + +exports[`content-rich > custom emoji 1`] = ` +"Daniel Roe + + \\":nuxt:\\" +" +`; + +exports[`content-rich > empty 1`] = `""`; + +exports[`content-rich > group mention > html 1`] = ` +"

+ +

+" +`; + +exports[`content-rich > handles formatting from servers 1`] = ` +"

Fedi HTML Support Survey

+

Does the following formatting come through accurately for you?

+

+ +
    +
  1. This list...
  2. +
  3. ...is numbered and indented
  4. +
+

This line is larger.

+" +`; + +exports[`content-rich > handles html within code blocks 1`] = ` +"

+ HTML block code:
+

+<span class="icon--noto icon--noto--1st-place-medal"></span>
+<span class="icon--noto icon--noto--2nd-place-medal-medal"></span>
+

+" +`; + +exports[`content-rich > inline code with link 1`] = ` +"

+ Inline code with link: + https://api.iconify.design/noto.css?icons=1st-place-medal,2nd-place-medal +

+" +`; + +exports[`content-rich > link + mention 1`] = ` +"

+ Happy + \\"πŸ€—\\" + we’re now using + + (migrated from chai+mocha) + https://github.com/ayoayco/astro-reactive-library/pull/203 +

+" +`; + +exports[`content-rich > plain text 1`] = ` +"hello there +" +`; + +exports[`editor > transform mentions 1`] = ` +" +@elk Hello" +`; diff --git a/tests/nuxt/__snapshots__/html-parse.test.ts.snap b/tests/nuxt/__snapshots__/html-parse.test.ts.snap new file mode 100644 index 00000000..d7f36a0d --- /dev/null +++ b/tests/nuxt/__snapshots__/html-parse.test.ts.snap @@ -0,0 +1,144 @@ +// Vitest Snapshot v1 + +exports[`html-parse > code frame > html 1`] = ` +"

Testing code block

import { useMouse, usePreferredDark } from '@vueuse/core'
+// tracks mouse position
+const { x, y } = useMouse()
+// is the user prefers dark theme
+const isDark = usePreferredDark()

" +`; + +exports[`html-parse > code frame > text 1`] = ` +"Testing code block + + +\`\`\`ts +import { useMouse, usePreferredDark } from '@vueuse/core' +// tracks mouse position +const { x, y } = useMouse() +// is the user prefers dark theme +const isDark = usePreferredDark() +\`\`\`" +`; + +exports[`html-parse > code frame 2 > html 1`] = ` +"

+ @antfu + Testing
+

const a = hello
+

+" +`; + +exports[`html-parse > code frame 2 > text 1`] = ` +"@antfu Testing + +\`\`\`ts +const a = hello +\`\`\`" +`; + +exports[`html-parse > custom emoji > html 1`] = ` +"Daniel Roe + + \\":nuxt:\\" +" +`; + +exports[`html-parse > custom emoji > text 1`] = `"Daniel Roe :nuxt:"`; + +exports[`html-parse > emojis > html 1`] = ` +"\\"πŸ‡«πŸ‡·\\" +\\"πŸ‘¨β€πŸ‘©β€πŸ‘¦\\" +\\"πŸ‘©β€πŸš’\\"\\"πŸ§‘πŸ½β€πŸš€\\" +" +`; + +exports[`html-parse > emojis > text 1`] = `"πŸ‡«πŸ‡· πŸ‘¨β€πŸ‘©β€πŸ‘¦ πŸ‘©β€πŸš’πŸ§‘πŸ½β€πŸš€"`; + +exports[`html-parse > empty > html 1`] = `""`; + +exports[`html-parse > empty > text 1`] = `""`; + +exports[`html-parse > html entities > html 1`] = ` +"

Hello <World />.

+" +`; + +exports[`html-parse > html entities > text 1`] = `"Hello ."`; + +exports[`html-parse > inline markdown > html 1`] = `"

text code bold italic del

code block

"`; + +exports[`html-parse > inline markdown > text 1`] = ` +"text \`code\` **bold** *italic* ~~del~~ + + +\`\`\`js +code block +\`\`\`" +`; + +exports[`html-parse > link + mention > html 1`] = ` +"

+ Happy + \\"πŸ€—\\" + we’re now using + @vitest + (migrated from chai+mocha) + https://github.com/ayoayco/astro-reactive-library/pull/203 +

+" +`; + +exports[`html-parse > link + mention > text 1`] = `"Happy πŸ€— we’re now using @vitest (migrated from chai+mocha) https://github.com/ayoayco/astro-reactive-library/pull/203"`; diff --git a/tests/content-rich.test.ts b/tests/nuxt/content-rich.test.ts similarity index 96% rename from tests/content-rich.test.ts rename to tests/nuxt/content-rich.test.ts index bb42d97c..9d32b592 100644 --- a/tests/content-rich.test.ts +++ b/tests/nuxt/content-rich.test.ts @@ -1,10 +1,10 @@ -/* eslint-disable vue/one-component-per-file */ import { describe, expect, it, vi } from 'vitest' import { renderToString } from 'vue/server-renderer' import { format } from 'prettier' import type { mastodon } from 'masto' +import { mockComponent } from 'nuxt-vitest/utils' import { contentToVNode } from '~/composables/content-render' -import type { ContentParseOptions } from '~~/composables/content-parse' +import type { ContentParseOptions } from '~/composables/content-parse' describe('content-rich', () => { it('empty', async () => { @@ -298,14 +298,9 @@ vi.mock('~/components/content/ContentMentionGroup.vue', async () => { } }) -vi.mock('~/components/account/AccountHoverWrapper.vue', async () => { - const { defineComponent } = await import('vue') - return { - default: defineComponent({ - props: ['handle', 'class'], - setup(_, { slots }) { - return () => slots?.default?.() - }, - }), - } +mockComponent('AccountHoverWrapper', { + props: ['handle', 'class'], + setup(_, { slots }) { + return () => slots?.default?.() + }, }) diff --git a/tests/html-parse.test.ts b/tests/nuxt/html-parse.test.ts similarity index 100% rename from tests/html-parse.test.ts rename to tests/nuxt/html-parse.test.ts diff --git a/tests/html-to-text.test.ts b/tests/nuxt/html-to-text.test.ts similarity index 100% rename from tests/html-to-text.test.ts rename to tests/nuxt/html-to-text.test.ts diff --git a/tests/language.test.ts b/tests/unit/language.test.ts similarity index 100% rename from tests/language.test.ts rename to tests/unit/language.test.ts diff --git a/tests/permalinks.test.ts b/tests/unit/permalinks.test.ts similarity index 92% rename from tests/permalinks.test.ts rename to tests/unit/permalinks.test.ts index fe3127fa..f6d6b3a5 100644 --- a/tests/permalinks.test.ts +++ b/tests/unit/permalinks.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import { HANDLED_MASTO_URLS } from '../constants' +import { HANDLED_MASTO_URLS } from '~/constants' const validPermalinks = [ 'https://m1as-social34.to.social/@elk', diff --git a/tests/reorder-timeline.test.ts b/tests/unit/reorder-timeline.test.ts similarity index 100% rename from tests/reorder-timeline.test.ts rename to tests/unit/reorder-timeline.test.ts diff --git a/vitest.config.mjs b/vitest.config.mjs index f57754dd..78f4876c 100644 --- a/vitest.config.mjs +++ b/vitest.config.mjs @@ -1,6 +1,6 @@ -import { defineConfigWithNuxtEnv } from 'vitest-environment-nuxt/config' +import { defineVitestConfig } from 'nuxt-vitest' -export default defineConfigWithNuxtEnv({ +export default defineVitestConfig({ define: { 'process.test': 'true', },