-
Notifications
You must be signed in to change notification settings - Fork 100
/
Copy pathmsw.ts
46 lines (45 loc) · 1.24 KB
/
msw.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import { http, RequestHandler, HttpResponse, delay } from 'msw';
import { apiClient } from '@ovh-ux/manager-core-api';
import { Handler } from './bdd.type';
export const toMswHandlers = (handlers: Handler[] = []): RequestHandler[] =>
handlers
.filter(Boolean)
.filter(({ disabled }) => !disabled)
.map(
({
url,
method = 'get',
headers,
type,
statusText,
delay: delayTime = 1000,
status = 200,
response,
responseText,
api = 'v6',
baseUrl,
once,
}: Handler) =>
http[method](
`${baseUrl ?? apiClient[api].getUri()}${
url.startsWith('/') ? '' : '/'
}${url}`,
async ({ request, params, cookies }) => {
await delay(delayTime);
if (responseText) {
return HttpResponse.text(responseText);
}
const json =
typeof response === 'function'
? await response(request, params, cookies)
: response;
return HttpResponse.json(json, {
status,
headers,
type,
statusText,
});
},
{ once },
),
);