This commit is contained in:
Nathan Bierema 2021-12-04 14:52:27 -05:00
parent 4c3ba07f25
commit fe435550d7
2 changed files with 40 additions and 96 deletions

View File

@ -19,41 +19,47 @@ const db = factory({
}); });
export const handlers = [ export const handlers = [
rest.post('/posts', async (req, res, ctx) => { rest.post<Post, never, Post | { error: string }>(
const { name } = req.body as Partial<Post>; '/posts',
async (req, res, ctx) => {
const { name } = req.body;
if (Math.random() < 0.3) { if (Math.random() < 0.3) {
return res( return res(
ctx.json({ error: 'Oh no, there was an error, try again.' }), ctx.json({ error: 'Oh no, there was an error, try again.' }),
ctx.status(500), ctx.status(500),
ctx.delay(300) ctx.delay(300)
); );
}
const post = db.post.create({
id: nanoid(),
name,
});
return res(ctx.json(post), ctx.delay(300));
} }
),
rest.put<Post, { id: string }, Post | { error: string }>(
'/posts/:id',
(req, res, ctx) => {
const { name } = req.body;
const post = db.post.create({ if (Math.random() < 0.3) {
id: nanoid(), return res(
name, ctx.json({ error: 'Oh no, there was an error, try again.' }),
}); ctx.status(500),
ctx.delay(300)
);
}
return res(ctx.json(post), ctx.delay(300)); const post = db.post.update({
}), where: { id: { equals: req.params.id } },
rest.put('/posts/:id', (req, res, ctx) => { data: { name },
const { name } = req.body as Partial<Post>; });
if (Math.random() < 0.3) { return res(ctx.json(post!), ctx.delay(300));
return res(
ctx.json({ error: 'Oh no, there was an error, try again.' }),
ctx.status(500),
ctx.delay(300)
);
} }
),
const post = db.post.update({
where: { id: { equals: req.params.id } },
data: { name },
});
return res(ctx.json(post), ctx.delay(300));
}),
...db.post.toHandlers('rest'), ...db.post.toHandlers('rest'),
] as const; ] as const;

View File

@ -4084,7 +4084,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@mswjs/interceptors@npm:^0.12.6, @mswjs/interceptors@npm:^0.12.7": "@mswjs/interceptors@npm:^0.12.7":
version: 0.12.7 version: 0.12.7
resolution: "@mswjs/interceptors@npm:0.12.7" resolution: "@mswjs/interceptors@npm:0.12.7"
dependencies: dependencies:
@ -7276,16 +7276,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/inquirer@npm:^7.3.3":
version: 7.3.3
resolution: "@types/inquirer@npm:7.3.3"
dependencies:
"@types/through": "*"
rxjs: ^6.4.0
checksum: 49b21d883ab533dbb84b400fa1aeab2638c37b87978d16f15636316c8d9f70d93a185479cf32081d9013fe2b362db05a83bdc3725771cc93d8bdab9182a96ab9
languageName: node
linkType: hard
"@types/inquirer@npm:^8.1.3": "@types/inquirer@npm:^8.1.3":
version: 8.1.3 version: 8.1.3
resolution: "@types/inquirer@npm:8.1.3" resolution: "@types/inquirer@npm:8.1.3"
@ -17163,7 +17153,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"inquirer@npm:^8.1.1, inquirer@npm:^8.2.0": "inquirer@npm:^8.2.0":
version: 8.2.0 version: 8.2.0
resolution: "inquirer@npm:8.2.0" resolution: "inquirer@npm:8.2.0"
dependencies: dependencies:
@ -21020,7 +21010,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"msw@npm:^0.36.0": "msw@npm:^0.36.0, msw@npm:latest":
version: 0.36.0 version: 0.36.0
resolution: "msw@npm:0.36.0" resolution: "msw@npm:0.36.0"
dependencies: dependencies:
@ -21050,36 +21040,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"msw@npm:latest":
version: 0.35.0
resolution: "msw@npm:0.35.0"
dependencies:
"@mswjs/cookies": ^0.1.6
"@mswjs/interceptors": ^0.12.6
"@open-draft/until": ^1.0.3
"@types/cookie": ^0.4.1
"@types/inquirer": ^7.3.3
"@types/js-levenshtein": ^1.1.0
chalk: ^4.1.1
chokidar: ^3.4.2
cookie: ^0.4.1
graphql: ^15.5.1
headers-utils: ^3.0.2
inquirer: ^8.1.1
is-node-process: ^1.0.1
js-levenshtein: ^1.1.6
node-fetch: ^2.6.1
node-match-path: ^0.6.3
statuses: ^2.0.0
strict-event-emitter: ^0.2.0
type-fest: ^1.2.2
yargs: ^17.0.1
bin:
msw: cli/index.js
checksum: cc5e85573e85779a95b1d5bfc306d4d0bcb4de660ac08c640e316c00fe4a0ea24dfe1decf6a46d10538550dfc7f7559836e1fda3d6e1f60ee7e99916bb3db3ff
languageName: node
linkType: hard
"multicast-dns-service-types@npm:^1.1.0": "multicast-dns-service-types@npm:^1.1.0":
version: 1.1.0 version: 1.1.0
resolution: "multicast-dns-service-types@npm:1.1.0" resolution: "multicast-dns-service-types@npm:1.1.0"
@ -21441,13 +21401,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"node-match-path@npm:^0.6.3":
version: 0.6.3
resolution: "node-match-path@npm:0.6.3"
checksum: d515bc069f293688109c058ee02567528fdaa856290d362b80a2254734975014e4eefcdcc5164a8adfd5560aa870e277c97fe8be648074d5088056cf61553c7c
languageName: node
linkType: hard
"node-modules-regexp@npm:^1.0.0": "node-modules-regexp@npm:^1.0.0":
version: 1.0.0 version: 1.0.0
resolution: "node-modules-regexp@npm:1.0.0" resolution: "node-modules-regexp@npm:1.0.0"
@ -26057,7 +26010,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"rxjs@npm:^6.4.0, rxjs@npm:^6.6.0": "rxjs@npm:^6.6.0":
version: 6.6.7 version: 6.6.7
resolution: "rxjs@npm:6.6.7" resolution: "rxjs@npm:6.6.7"
dependencies: dependencies:
@ -30602,21 +30555,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"yargs@npm:^17.0.1":
version: 17.2.1
resolution: "yargs@npm:17.2.1"
dependencies:
cliui: ^7.0.2
escalade: ^3.1.1
get-caller-file: ^2.0.5
require-directory: ^2.1.1
string-width: ^4.2.0
y18n: ^5.0.5
yargs-parser: ^20.2.2
checksum: 451aac46f82da776f436018feed0244bc0e7b4355f7e397bcb53d34c691b177c0d71db3dda9653760e1bc240254d8b763a252ff918ef9e235a8d202e2909c4eb
languageName: node
linkType: hard
"yargs@npm:^17.3.0": "yargs@npm:^17.3.0":
version: 17.3.0 version: 17.3.0
resolution: "yargs@npm:17.3.0" resolution: "yargs@npm:17.3.0"