From fb6f3be64ae66ee43fc4724a0a26f16c97b9e35e Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 19 Dec 2023 15:28:11 +0000 Subject: [PATCH] test: add example test for nuxt-injected value resolves https://github.com/nuxt/test-utils/issues/539 Co-authored-by: Oskar Olsson --- .../components/InjectedValueComponent.vue | 11 +++++++++++ examples/app-vitest-full/plugins/inject-value.ts | 13 +++++++++++++ .../tests/nuxt/injected-value-component.spec.ts | 12 ++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 examples/app-vitest-full/components/InjectedValueComponent.vue create mode 100644 examples/app-vitest-full/plugins/inject-value.ts create mode 100644 examples/app-vitest-full/tests/nuxt/injected-value-component.spec.ts diff --git a/examples/app-vitest-full/components/InjectedValueComponent.vue b/examples/app-vitest-full/components/InjectedValueComponent.vue new file mode 100644 index 000000000..640ec5c01 --- /dev/null +++ b/examples/app-vitest-full/components/InjectedValueComponent.vue @@ -0,0 +1,11 @@ + + + diff --git a/examples/app-vitest-full/plugins/inject-value.ts b/examples/app-vitest-full/plugins/inject-value.ts new file mode 100644 index 000000000..940bda85a --- /dev/null +++ b/examples/app-vitest-full/plugins/inject-value.ts @@ -0,0 +1,13 @@ +export const CUSTOM_VUE_PLUGIN_SYMBOL = Symbol('CUSTOM_VUE_PLUGIN_INJECTED') + +export const VUE_INJECTED_VALUE = 'injected vue plugin value' + +export default defineNuxtPlugin((nuxtApp) => { + const vuePlugin = { + install(app: any) { + app.provide(CUSTOM_VUE_PLUGIN_SYMBOL, VUE_INJECTED_VALUE) + }, + } + + nuxtApp.vueApp.use(vuePlugin) +}) \ No newline at end of file diff --git a/examples/app-vitest-full/tests/nuxt/injected-value-component.spec.ts b/examples/app-vitest-full/tests/nuxt/injected-value-component.spec.ts new file mode 100644 index 000000000..d0adf9455 --- /dev/null +++ b/examples/app-vitest-full/tests/nuxt/injected-value-component.spec.ts @@ -0,0 +1,12 @@ +import { describe, expect, it } from 'vitest' +import { mountSuspended } from '@nuxt/test-utils/runtime' + +import { VUE_INJECTED_VALUE } from '~/plugins/inject-value' +import InjectedValueComponent from '~/components/InjectedValueComponent.vue' + +describe('InjectedValueComponent', () => { + it('can use injected values from a plugin', async () => { + const component = await mountSuspended(InjectedValueComponent) + expect(component.text()).toContain(VUE_INJECTED_VALUE) + }) +})