Skip to content

Commit 3d86e5f

Browse files
committed
msw: Migrate fixtures to new @msw/data API
1 parent 368e52d commit 3d86e5f

File tree

4 files changed

+70
-59
lines changed

4 files changed

+70
-59
lines changed

packages/crates-io-msw/fixtures.js

Lines changed: 62 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,67 +8,77 @@ import USERS from './fixtures/users.js';
88
import VERSION_DOWNLOADS from './fixtures/version-downloads.js';
99
import VERSIONS from './fixtures/versions.js';
1010

11-
export function loadFixtures(db) {
12-
CATEGORIES.forEach(it => db.category.create(it));
13-
let keywords = KEYWORDS.map(it => db.keyword.create(it));
11+
export async function loadFixtures(db) {
12+
await Promise.all(structuredClone(CATEGORIES).map(it => db.category.create(it)));
13+
let keywords = await Promise.all(structuredClone(KEYWORDS).map(it => db.keyword.create(it)));
1414

15-
let users = USERS.map(it => db.user.create(it));
16-
let teams = TEAMS.map(it => db.team.create(it));
15+
let users = await Promise.all(structuredClone(USERS).map(it => db.user.create(it)));
16+
let teams = await Promise.all(structuredClone(TEAMS).map(it => db.team.create(it)));
1717

18-
let crates = CRATES.map(it => {
19-
if (it.keywordIds) {
20-
it.keywords = it.keywordIds.map(id => keywords.find(k => k.id === id)).filter(Boolean);
21-
delete it.keywordIds;
22-
}
18+
let crates = await Promise.all(
19+
structuredClone(CRATES).map(it => {
20+
if (it.keywordIds) {
21+
it.keywords = it.keywordIds.map(id => keywords.find(k => k.id === id)).filter(Boolean);
22+
delete it.keywordIds;
23+
}
2324

24-
return db.crate.create(it);
25-
});
25+
return db.crate.create(it);
26+
}),
27+
);
2628

27-
CRATE_OWNERSHIPS.forEach(it => {
28-
if (it.crateId) {
29-
it.crate = crates.find(c => c.name === it.crateId);
30-
delete it.crateId;
31-
}
32-
if (it.teamId) {
33-
it.team = teams.find(t => t.id === it.teamId);
34-
delete it.teamId;
35-
}
36-
if (it.userId) {
37-
it.user = users.find(u => u.id === it.userId);
38-
delete it.userId;
39-
}
29+
await Promise.all(
30+
structuredClone(CRATE_OWNERSHIPS).map(it => {
31+
if (it.crateId) {
32+
it.crate = crates.find(c => c.name === it.crateId);
33+
delete it.crateId;
34+
}
35+
if (it.teamId) {
36+
it.team = teams.find(t => t.id === it.teamId);
37+
delete it.teamId;
38+
}
39+
if (it.userId) {
40+
it.user = users.find(u => u.id === it.userId);
41+
delete it.userId;
42+
}
4043

41-
return db.crateOwnership.create(it);
42-
});
44+
return db.crateOwnership.create(it);
45+
}),
46+
);
4347

44-
let versions = VERSIONS.map(it => {
45-
if (it.crateId) {
46-
it.crate = crates.find(c => c.name === it.crateId);
47-
delete it.crateId;
48-
}
48+
let versions = await Promise.all(
49+
structuredClone(VERSIONS).map(it => {
50+
if (it.crateId) {
51+
it.crate = crates.find(c => c.name === it.crateId);
52+
delete it.crateId;
53+
}
4954

50-
return db.version.create(it);
51-
});
55+
return db.version.create(it);
56+
}),
57+
);
5258

53-
DEPENDENCIES.forEach(it => {
54-
if (it.crateId) {
55-
it.crate = crates.find(c => c.name === it.crateId);
56-
delete it.crateId;
57-
}
58-
if (it.versionId) {
59-
it.version = versions.find(v => v.id === it.versionId);
60-
delete it.versionId;
61-
}
59+
await Promise.all(
60+
structuredClone(DEPENDENCIES).map(it => {
61+
if (it.crateId) {
62+
it.crate = crates.find(c => c.name === it.crateId);
63+
delete it.crateId;
64+
}
65+
if (it.versionId) {
66+
it.version = versions.find(v => v.id === it.versionId);
67+
delete it.versionId;
68+
}
6269

63-
return db.dependency.create(it);
64-
});
70+
return db.dependency.create(it);
71+
}),
72+
);
6573

66-
VERSION_DOWNLOADS.forEach(it => {
67-
if (it.versionId) {
68-
it.version = versions.find(v => v.id === it.versionId);
69-
delete it.versionId;
70-
}
74+
await Promise.all(
75+
structuredClone(VERSION_DOWNLOADS).map(it => {
76+
if (it.versionId) {
77+
it.version = versions.find(v => v.id === it.versionId);
78+
delete it.versionId;
79+
}
7180

72-
return db.versionDownload.create(it);
73-
});
81+
return db.versionDownload.create(it);
82+
}),
83+
);
7484
}

packages/crates-io-msw/fixtures.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ import { loadFixtures } from './fixtures.js';
44
import { db } from './index.js';
55

66
test('loadFixtures() succeeds', async function () {
7-
loadFixtures(db);
7+
await loadFixtures(db);
88
});

packages/crates-io-msw/fixtures/dependencies.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ export default [
22
{
33
crateId: 'libc',
44
default_features: true,
5-
features: '',
5+
features: [],
66
id: 146_231,
77
kind: 'normal',
88
optional: false,
@@ -13,7 +13,7 @@ export default [
1313
{
1414
crateId: 'nanomsg-sys',
1515
default_features: true,
16-
features: '',
16+
features: [],
1717
id: 146_232,
1818
kind: 'normal',
1919
optional: false,
@@ -24,7 +24,7 @@ export default [
2424
{
2525
crateId: 'nanomsg',
2626
default_features: true,
27-
features: '',
27+
features: [],
2828
id: 146_233,
2929
kind: 'normal',
3030
optional: false,
@@ -35,7 +35,7 @@ export default [
3535
{
3636
crateId: 'mock-build-deps',
3737
default_features: true,
38-
features: '',
38+
features: [],
3939
id: 146_234,
4040
kind: 'build',
4141
optional: false,
@@ -46,7 +46,7 @@ export default [
4646
{
4747
crateId: 'mock-dev-deps',
4848
default_features: true,
49-
features: '',
49+
features: [],
5050
id: 146_235,
5151
kind: 'dev',
5252
optional: true,

packages/crates-io-msw/models/crate.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import { applyDefault } from '../utils/defaults.js';
55
import { preCreateExtension } from '../utils/pre-create-extension.js';
66

77
const schema = z.object({
8-
id: z.number(),
8+
// `z.string()` is used to support some of our old fixture that use strings here for some reason
9+
id: z.number().or(z.string()),
910

1011
name: z.string(),
1112
description: z.string(),

0 commit comments

Comments
 (0)