mirror of
https://github.com/hanzoai/msw.git
synced 2026-09-24 17:00:34 +00:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import { test, expect } from '../playwright.extend'
|
|
|
|
type ExpectedResponseBody =
|
|
| {
|
|
status: 'pending' | 'complete'
|
|
count: number
|
|
}
|
|
| {
|
|
status: 'done'
|
|
}
|
|
|
|
test('supports a generator function as the response resolver', async ({
|
|
loadExample,
|
|
fetch,
|
|
}) => {
|
|
await loadExample(new URL('./generator.mocks.ts', import.meta.url))
|
|
|
|
const assertRequest = async (expectedBody: ExpectedResponseBody) => {
|
|
const res = await fetch('/polling/3')
|
|
const body = await res.json()
|
|
expect(res.fromServiceWorker()).toBe(true)
|
|
expect(res.status()).toBe(200)
|
|
expect(body).toEqual(expectedBody)
|
|
}
|
|
|
|
await assertRequest({ status: 'pending', count: 1 })
|
|
await assertRequest({ status: 'pending', count: 2 })
|
|
await assertRequest({ status: 'pending', count: 3 })
|
|
await assertRequest({ status: 'complete', count: 3 })
|
|
await assertRequest({ status: 'complete', count: 3 })
|
|
await assertRequest({ status: 'complete', count: 3 })
|
|
})
|
|
|
|
test('supports one-time handlers with the generator as the response resolver', async ({
|
|
loadExample,
|
|
fetch,
|
|
}) => {
|
|
await loadExample(new URL('./generator.mocks.ts', import.meta.url))
|
|
|
|
const assertRequest = async (expectedBody: ExpectedResponseBody) => {
|
|
const res = await fetch('/polling/once/3')
|
|
const body = await res.json()
|
|
expect(res.fromServiceWorker()).toBe(true)
|
|
expect(res.status()).toBe(200)
|
|
expect(body).toEqual(expectedBody)
|
|
}
|
|
|
|
await assertRequest({ status: 'pending', count: 1 })
|
|
await assertRequest({ status: 'pending', count: 2 })
|
|
await assertRequest({ status: 'pending', count: 3 })
|
|
await assertRequest({ status: 'complete', count: 3 })
|
|
await assertRequest({ status: 'done' })
|
|
await assertRequest({ status: 'done' })
|
|
})
|