8000 test: vitest v4 compatibility · nuxt/nuxt@70e147b · GitHub
[go: up one dir, main page]

Skip to content

Commit 70e147b

Browse files
committed
test: vitest v4 compatibility
1 parent d35cf1f commit 70e147b

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

test/nuxt/nuxt-island.test.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,17 @@ async function createServer (handler: ServerHandler) {
2222
}
2323
}
2424

25-
vi.mock('#build/nuxt.config.mjs', async (original) => {
25+
vi.mock('#build/nuxt.config.mjs', () => {
2626
return {
27-
// @ts-expect-error virtual file
28-
...(await original()),
2927
remoteComponentIslands: true,
3028
selectiveClient: true,
29+
renderJsonPayloads: true,
30+
componentIslands: true,
31+
payloadExtraction: false,
32+
appManifest: false,
33+
appId: 'nuxt-app',
34+
multiApp: false,
35+
appBaseURL: '/',
3136
}
3237
})
3338

test/nuxt/use-async-data.test.ts

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,21 +1121,42 @@ describe('useAsyncData', () => {
11211121
it('should work when AbortSignal.reason is unavailable (older browsers)', async () => {
11221122
vi.useFakeTimers()
11231123

1124+
const originalAbortSignalAny = AbortSignal.any
1125+
11241126
// Mock older AbortController without .reason property
1125-
class OldAbortController {
1126-
signal: any = {
1127-
aborted: false,
1128-
addEventListener: vi.fn(),
1129-
removeEventListener: vi.fn(),
1127+
class OldAbortSignal {
1128+
aborted = false
1129+
private listeners: Array<{ event: string, callback: () => void }> = []
1130+
1131+
addEventListener (event: string, callback: () => void, _options?: { once?: boolean, signal?: AbortSignal }) {
1132+
this< 8000 span class=pl-kos>.listeners.push({ event, callback })
11301133
}
11311134

1132-
abort () {
1133-
this.signal.aborted = true
1135+
removeEventListener (event: string, callback: () => void) {
1136+
this.listeners = this.listeners.filter(l => !(l.event === event && l.callback === callback))
1137+
}
1138+
1139+
dispatchAbort () {
1140+
this.aborted = true
11341141
// No reason property in old browsers
1142+
for (const listener of this.listeners.filter(l => l.event === 'abort')) {
1143+
listener.callback()
1144+
}
1145+
}
1146+
}
1147+
1148+
class OldAbortController {
1149+
signal = new OldAbortSignal()
1150+
1151+
abort () {
1152+
this.signal.dispatchAbort()
11351153
}
11361154
}
11371155

11381156
vi.stubGlobal('AbortController', OldAbortController)
1157+
// Also remove AbortSignal.any to force polyfill usage
1158+
// @ts-expect-error - deliberately removing method
1159+
AbortSignal.any = undefined
11391160

11401161
const promiseFn = vi.fn(() => new Promise(resolve => setTimeout(() => resolve('test'), 1000)))
11411162

@@ -1147,6 +1168,7 @@ describe('useAsyncData', () => {
11471168

11481169
expect(status.value).toBe('idle')
11491170

1171+
AbortSignal.any = originalAbortSignalAny
11501172
vi.unstubAllGlobals()
11511173
vi.useRealTimers()
11521174
})

0 commit comments

Comments
 (0)
0