]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
test(nuxt): add e2e test
authorDaniel Roe <daniel@roe.dev>
Wed, 17 Aug 2022 13:41:06 +0000 (15:41 +0200)
committerEduardo San Martin Morote <posva@users.noreply.github.com>
Wed, 17 Aug 2022 14:52:13 +0000 (16:52 +0200)
.github/workflows/test.yml
packages/nuxt/__tests__/nuxt.spec.ts [new file with mode: 0644]
packages/nuxt/package.json
packages/nuxt/playground/nuxt.config.ts
packages/nuxt/src/module.ts
pnpm-lock.yaml

index 754794cf26df6c16f2b80fecb3fb6b7530621a13..fe2c43ee01dfb08f8907516716885c459d32a5f3 100644 (file)
@@ -27,6 +27,7 @@ jobs:
       - run: pnpm install
       - run: pnpm run lint
       - run: pnpm run test:types
+      - run: pnpm run -r dev:prepare
       - run: pnpm run test:vitest
       - run: pnpm run build
       - run: pnpm run build:dts
diff --git a/packages/nuxt/__tests__/nuxt.spec.ts b/packages/nuxt/__tests__/nuxt.spec.ts
new file mode 100644 (file)
index 0000000..973c765
--- /dev/null
@@ -0,0 +1,29 @@
+import { fileURLToPath } from 'node:url'
+import { describe, it, expect } from 'vitest'
+import { setup, $fetch } from '@nuxt/test-utils'
+
+describe('works with nuxt', async () => {
+  await setup({
+    server: true,
+    rootDir: fileURLToPath(new URL('../playground', import.meta.url)),
+    nuxtConfig: {
+      hooks: {
+        'vite:extendConfig'(config, { isClient }) {
+          config.define!.__BROWSER__ = isClient
+        },
+      },
+      vite: {
+        define: {
+          __DEV__: false,
+          __TEST__: true,
+          __FEATURE_PROD_DEVTOOLS__: false,
+        },
+      },
+    },
+  })
+
+  it('works on ssr', async () => {
+    const html = await $fetch('/')
+    expect(html).toContain('Count: 101')
+  })
+})
index da42db6794272b7d09a363c9b5035baee73cf867..840f0cb2b0dc0a33f9c6416ed00862b5849a5672 100644 (file)
@@ -50,6 +50,7 @@
   },
   "devDependencies": {
     "@nuxt/module-builder": "latest",
+    "@nuxt/test-utils": "^3.0.0-rc.8",
     "nuxt": "^3.0.0-rc.8",
     "typescript": "^4.7.4",
     "vue-tsc": "^0.39.5"
index 3bc8ae01ed809985ff9aa0545772014cc2d4d639..17edf8ddb4df1d470994b5d85f5db3a1026ba6ce 100644 (file)
@@ -1,6 +1,13 @@
+import { fileURLToPath } from 'node:url'
 import { defineNuxtConfig } from 'nuxt'
 import piniaModule from '../src/module'
 
 export default defineNuxtConfig({
+  alias: {
+    pinia: fileURLToPath(new URL('../../pinia/src/index.ts', import.meta.url)),
+  },
   modules: [piniaModule],
+  pinia: {
+    autoImports: [['defineStore', 'definePiniaStore']],
+  },
 })
index a130303a5788a5af7604c6e31c188eb9e2b53a30..2ea0dc00e31644ef3d3be000b171232c7212b1b9 100644 (file)
@@ -61,9 +61,11 @@ export default defineNuxtModule<ModuleOptions>({
     nuxt.options.build.transpile.push(resolver.resolve('./runtime'))
 
     // Make sure we use the mjs build for pinia
-    nuxt.options.alias.pinia = resolveModule('pinia/dist/pinia.mjs', {
-      paths: [nuxt.options.rootDir, import.meta.url],
-    })
+    nuxt.options.alias.pinia =
+      nuxt.options.alias.pinia ||
+      resolveModule('pinia/dist/pinia.mjs', {
+        paths: [nuxt.options.rootDir, import.meta.url],
+      })
 
     nuxt.hook('prepare:types', ({ references }) => {
       references.push({ types: '@pinia/nuxt' })
index 0dd114e201f2b96fdf062faf1bb8306d1b134f0c..ee7fba3fc70bcbfb6a5585a9d343cf07563ced58 100644 (file)
@@ -90,6 +90,7 @@ importers:
     specifiers:
       '@nuxt/kit': 3.0.0-rc.6
       '@nuxt/module-builder': latest
+      '@nuxt/test-utils': ^3.0.0-rc.8
       nuxt: ^3.0.0-rc.8
       pinia: workspace:^2.0.18
       typescript: ^4.7.4
@@ -99,6 +100,7 @@ importers:
       pinia: link:../pinia
     devDependencies:
       '@nuxt/module-builder': 0.1.7
+      '@nuxt/test-utils': 3.0.0-rc.8
       nuxt: 3.0.0-rc.8
       typescript: 4.7.4
       vue-tsc: 0.39.5_typescript@4.7.4
@@ -969,6 +971,27 @@ packages:
       - webpack
     dev: true
 
+  /@nuxt/test-utils/3.0.0-rc.8:
+    resolution: {integrity: sha512-YdTkMVensrWpMoDnUX4oNRZbaMarNTxDNYjRvZOe1QFtEc8zjqrBhkUfwzA9n9bTzN0xiDxrSLnVNndEY5mfOg==}
+    engines: {node: ^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0}
+    peerDependencies:
+      vue: ^3.2.37
+    dependencies:
+      '@nuxt/kit': 3.0.0-rc.8
+      '@nuxt/schema': 3.0.0-rc.8
+      defu: 6.1.0
+      execa: 6.1.0
+      get-port-please: 2.6.1
+      jiti: 1.14.0
+      ohmyfetch: 0.4.18
+    transitivePeerDependencies:
+      - esbuild
+      - rollup
+      - supports-color
+      - vite
+      - webpack
+    dev: true
+
   /@nuxt/ui-templates/0.3.2:
     resolution: {integrity: sha512-o0KRB0Mna/M5QxqMe+XvlfKczFz3CQMlkEr6Ztyphp+00jq1Ti0AXdq1XAt9hXI3LoZRh4+2vVX331UaIZQQzQ==}
     dev: true