Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions examples/app-vitest-full/components/ComponentWithCssVar.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<template>
<div>
Css Module
<span
id="s1"
:class="$style.class1"
/>
<span
id="s2"
:class="$style.class1"
/>
<span id="s3" />
</div>
</template>

<style module>
.class1 {
color: red;
}
.class2 {
color: blue;
}
</style>
9 changes: 9 additions & 0 deletions examples/app-vitest-full/tests/nuxt/mount-suspended.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import ComponentWithAttrs from '~/components/ComponentWithAttrs.vue'
import ComponentWithReservedProp from '~/components/ComponentWithReservedProp.vue'
import ComponentWithReservedState from '~/components/ComponentWithReservedState.vue'
import ComponentWithImports from '~/components/ComponentWithImports.vue'
import ComponentWithCssVar from '~/components/ComponentWithCssVar.vue'
import GenericStateComponent from '~/components/GenericStateComponent.vue'

import { BoundAttrs } from '#components'
Expand Down Expand Up @@ -275,6 +276,14 @@ describe('mountSuspended', () => {
})
})

it('can mount components with use css modules', async () => {
const component = await mountSuspended(ComponentWithCssVar)
expect(component.text()).toBe('Css Module')
expect(component.find('#s1').classes()).toHaveLength(1)
expect(component.find('#s2').classes()).toHaveLength(1)
expect(component.find('#s3').classes()).toHaveLength(0)
})

describe('Options API', () => {
beforeEach(() => {
vi.spyOn(console, 'error').mockImplementation((message) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import DirectiveComponent from '~/components/DirectiveComponent.vue'
import ExportDefaultComponent from '~/components/ExportDefaultComponent.vue'
import ExportDefineComponent from '~/components/ExportDefineComponent.vue'
import ComponentWithAttrs from '~/components/ComponentWithAttrs.vue'
import ComponentWithCssVar from '~/components/ComponentWithCssVar.vue'
import ExportDefaultWithRenderComponent from '~/components/ExportDefaultWithRenderComponent.vue'
import ExportDefaultReturnsRenderComponent from '~/components/ExportDefaultReturnsRenderComponent.vue'
import OptionsApiPage from '~/pages/other/options-api.vue'
Expand Down Expand Up @@ -170,6 +171,14 @@ describe('renderSuspended', () => {
})
})

it('can render components with use css modules', async () => {
const { container, html } = await renderSuspended(ComponentWithCssVar)
expect(html()).toContain('Css Module')
expect(container.querySelector('#s1')?.classList).toHaveLength(1)
expect(container.querySelector('#s2')?.classList).toHaveLength(1)
expect(container.querySelector('#s3')?.classList).toHaveLength(0)
})

describe('Options API', () => {
beforeEach(() => {
vi.spyOn(console, 'error').mockImplementation((message) => {
Expand Down
3 changes: 2 additions & 1 deletion src/runtime-utils/mount.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ export async function mountSuspended<T>(
const vueApp = tryUseNuxtApp()?.vueApp
// @ts-expect-error untyped global __unctx__
|| globalThis.__unctx__.get('nuxt-app').tryUse().vueApp
const { render, setup, data, computed, methods } = component as DefineComponent<Record<string, unknown>, Record<string, unknown>>
const { render, setup, data, computed, methods, ...componentRest } = component as DefineComponent<Record<string, unknown>, Record<string, unknown>>

let setupContext: SetupContext
let setupState: Record<string, unknown>
Expand Down Expand Up @@ -144,6 +144,7 @@ export async function mountSuspended<T>(
(resolve) => {
const vm = mount(
{
__cssModules: componentRest.__cssModules,
setup: (props: Record<string, unknown>, ctx: SetupContext) => {
setupContext = ctx

Expand Down
3 changes: 2 additions & 1 deletion src/runtime-utils/render.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export async function renderSuspended<T>(component: T, options?: RenderOptions<T
const vueApp = tryUseNuxtApp()?.vueApp
// @ts-expect-error untyped global __unctx__
|| globalThis.__unctx__.get('nuxt-app').tryUse().vueApp
const { render, setup, data, computed, methods } = component as DefineComponent<Record<string, unknown>, Record<string, unknown>>
const { render, setup, data, computed, methods, ...componentRest } = component as DefineComponent<Record<string, unknown>, Record<string, unknown>>

let setupContext: SetupContext
let setupState: SetupState
Expand Down Expand Up @@ -133,6 +133,7 @@ export async function renderSuspended<T>(component: T, options?: RenderOptions<T
return new Promise<ReturnType<typeof renderFromTestingLibrary> & { setupState: SetupState }>((resolve) => {
const utils = renderFromTestingLibrary(
{
__cssModules: componentRest.__cssModules,
setup: (props: Record<string, unknown>, ctx: SetupContext) => {
setupContext = ctx

Expand Down
Loading