Skip to content

Commit a021617

Browse files
committed
Split up handlers and server files
1 parent c6b4213 commit a021617

File tree

2 files changed

+92
-92
lines changed

2 files changed

+92
-92
lines changed
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
import { headersToObject } from 'headers-polyfill'
2+
import { HttpResponse, http } from 'msw'
3+
4+
export type Post = {
5+
id: string
6+
title: string
7+
body: string
8+
}
9+
10+
export const posts: Record<string, Post> = {
11+
'1': { id: '1', title: 'hello', body: 'extra body!' },
12+
}
13+
14+
export const handlers = [
15+
http.get(
16+
'https://example.com/echo',
17+
async ({ request, params, cookies, requestId }) => {
18+
return HttpResponse.json(
19+
{
20+
...request,
21+
params,
22+
cookies,
23+
requestId,
24+
url: new URL(request.url),
25+
headers: headersToObject(request.headers),
26+
},
27+
{ headers: request.headers }
28+
)
29+
}
30+
),
31+
http.post(
32+
'https://example.com/echo',
33+
async ({ request, cookies, params, requestId }) => {
34+
const body = headersToObject(request.headers)['content-type'] === 'text/html'
35+
? await request.text()
36+
: await request.json()
37+
38+
return HttpResponse.json(
39+
{
40+
...request,
41+
cookies,
42+
params,
43+
requestId,
44+
body,
45+
url: new URL(request.url),
46+
headers: request?.headers
47+
? headersToObject(request.headers)
48+
: request?.headers,
49+
},
50+
{ headers: request.headers }
51+
)
52+
}
53+
),
54+
http.get('https://example.com/success', () => {
55+
return HttpResponse.json({ value: 'success' })
56+
}),
57+
http.post('https://example.com/success', ({ request }) => {
58+
return HttpResponse.json({ value: 'success' })
59+
}),
60+
http.get('https://example.com/empty', () => new HttpResponse('')),
61+
http.get('https://example.com/error', () =>
62+
HttpResponse.json({ value: 'error' }, { status: 500 })
63+
),
64+
http.post('https://example.com/error', () =>
65+
HttpResponse.json({ value: 'error' }, { status: 500 })
66+
),
67+
http.get('https://example.com/nonstandard-error', () =>
68+
HttpResponse.json(
69+
{
70+
success: false,
71+
message: 'This returns a 200 but is really an error',
72+
},
73+
{ status: 200 }
74+
)
75+
),
76+
http.get('https://example.com/mirror', ({ params }) =>
77+
HttpResponse.json(params)
78+
),
79+
http.post('https://example.com/mirror', ({ params }) =>
80+
HttpResponse.json(params)
81+
),
82+
http.get('https://example.com/posts/random', () => {
83+
// just simulate an api that returned a random ID
84+
const { id } = posts[1]
85+
return HttpResponse.json({ id })
86+
}),
87+
http.get<Post, any, Pick<Post, 'id'>>(
88+
'https://example.com/post/:id',
89+
({ params }) => HttpResponse.json(posts[params.id])
90+
),
91+
]
Lines changed: 1 addition & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,5 @@
11
import { setupServer } from 'msw/node'
2-
import { headersToObject } from 'headers-polyfill'
3-
import { HttpResponse, http } from 'msw'
4-
5-
export type Post = {
6-
id: string
7-
title: string
8-
body: string
9-
}
10-
11-
export const posts: Record<string, Post> = {
12-
'1': { id: '1', title: 'hello', body: 'extra body!' },
13-
}
14-
15-
export const handlers = [
16-
http.get(
17-
'https://example.com/echo',
18-
async ({ request, params, cookies, requestId }) => {
19-
return HttpResponse.json(
20-
{
21-
...request,
22-
params,
23-
cookies,
24-
requestId,
25-
url: new URL(request.url),
26-
headers: headersToObject(request.headers),
27-
},
28-
{ headers: request.headers }
29-
)
30-
}
31-
),
32-
http.post(
33-
'https://example.com/echo',
34-
async ({ request, cookies, params, requestId }) => {
35-
const body = headersToObject(request.headers)['content-type'] === 'text/html'
36-
? await request.text()
37-
: await request.json()
38-
39-
return HttpResponse.json(
40-
{
41-
...request,
42-
cookies,
43-
params,
44-
requestId,
45-
body,
46-
url: new URL(request.url),
47-
headers: request?.headers
48-
? headersToObject(request.headers)
49-
: request?.headers,
50-
},
51-
{ headers: request.headers }
52-
)
53-
}
54-
),
55-
http.get('https://example.com/success', () => {
56-
return HttpResponse.json({ value: 'success' })
57-
}),
58-
http.post('https://example.com/success', ({ request }) => {
59-
return HttpResponse.json({ value: 'success' })
60-
}),
61-
http.get('https://example.com/empty', () => new HttpResponse('')),
62-
http.get('https://example.com/error', () =>
63-
HttpResponse.json({ value: 'error' }, { status: 500 })
64-
),
65-
http.post('https://example.com/error', () =>
66-
HttpResponse.json({ value: 'error' }, { status: 500 })
67-
),
68-
http.get('https://example.com/nonstandard-error', () =>
69-
HttpResponse.json(
70-
{
71-
success: false,
72-
message: 'This returns a 200 but is really an error',
73-
},
74-
{ status: 200 }
75-
)
76-
),
77-
http.get('https://example.com/mirror', ({ params }) =>
78-
HttpResponse.json(params)
79-
),
80-
http.post('https://example.com/mirror', ({ params }) =>
81-
HttpResponse.json(params)
82-
),
83-
http.get('https://example.com/posts/random', () => {
84-
// just simulate an api that returned a random ID
85-
const { id } = posts[1]
86-
return HttpResponse.json({ id })
87-
}),
88-
http.get<Post, any, Pick<Post, 'id'>>(
89-
'https://example.com/post/:id',
90-
({ params }) => HttpResponse.json(posts[params.id])
91-
),
92-
]
93-
2+
import { handlers } from './handlers'
943

954
// This configures a request mocking server with the given request handlers.
965
export const server = setupServer(...handlers)

0 commit comments

Comments
 (0)