tangled
alpha
login
or
join now
linkat.blue
/
linkat
6
fork
atom
Create your Link in Bio for Bluesky
6
fork
atom
overview
issues
pulls
pipelines
テスト修正
mkizka.dev
2 years ago
747c30c8
f8c9d73a
+38
-10
3 changed files
expand all
collapse all
unified
split
.env.test
app
server
service
boardService
board.spec.ts
vitest
vitest.setup.ts
+4
.env.test
···
1
1
+
# bsky
2
2
+
BSKY_PUBLIC_API_URL=https://public.api.example.com
3
3
+
ATPROTO_PLC_URL=https://plc.example.com
4
4
+
1
5
# prisma
2
6
DATABASE_URL=postgresql://postgres:password@localhost:5432/test
+34
-5
app/server/service/boardService/board.spec.ts
···
27
27
},
28
28
};
29
29
30
30
+
const dummyDidDocument = (did: string) => ({
31
31
+
"@context": [
32
32
+
"https://www.w3.org/ns/did/v1",
33
33
+
"https://w3id.org/security/suites/secp256k1-2019/v1",
34
34
+
],
35
35
+
id: did,
36
36
+
service: [
37
37
+
{
38
38
+
id: "#atproto_pds",
39
39
+
type: "AtprotoPersonalDataServer",
40
40
+
serviceEndpoint: "https://pds.example.com",
41
41
+
},
42
42
+
],
43
43
+
});
44
44
+
30
45
describe("boardService", () => {
31
46
describe("createBoard", () => {
32
47
test("ボードがない場合は新規作成する", async () => {
···
71
86
const user = await UserFactory.create();
72
87
server.use(
73
88
http.get(
74
74
-
"https://public.api.example.com/xrpc/com.atproto.repo.getRecord",
89
89
+
`https://plc.example.com/${encodeURIComponent(user.did)}`,
90
90
+
() => HttpResponse.json(dummyDidDocument(user.did)),
91
91
+
),
92
92
+
http.get(
93
93
+
"https://pds.example.com/xrpc/com.atproto.repo.getRecord",
75
94
() => HttpResponse.json(dummyBoardRecord),
76
95
),
77
96
);
···
82
101
});
83
102
test("DBにボードがなくPDSから取得したボードが不正ならnullを返す", async () => {
84
103
// arrange
104
104
+
const user = await UserFactory.create();
85
105
server.use(
86
106
http.get(
87
87
-
"https://public.api.example.com/xrpc/com.atproto.repo.getRecord",
107
107
+
`https://plc.example.com/${encodeURIComponent(user.did)}`,
108
108
+
() => HttpResponse.json(dummyDidDocument(user.did)),
109
109
+
),
110
110
+
http.get(
111
111
+
"https://pds.example.com/xrpc/com.atproto.repo.getRecord",
88
112
() =>
89
113
HttpResponse.json({
90
114
...dummyBoardRecord,
···
93
117
),
94
118
);
95
119
// act
96
96
-
const actual = await boardService.findOrFetchBoard("did:plc:example");
120
120
+
const actual = await boardService.findOrFetchBoard(user.did);
97
121
// assert
98
122
expect(mockedLogger.warn).toHaveBeenCalledWith(
99
123
"PDSからのboardの形式が不正でした",
···
103
127
});
104
128
test("DBにもPDSにもボードが無いときはnullを返す", async () => {
105
129
// arrange
130
130
+
const user = await UserFactory.create();
106
131
server.use(
107
132
http.get(
108
108
-
"https://public.api.example.com/xrpc/com.atproto.repo.getRecord",
133
133
+
`https://plc.example.com/${encodeURIComponent(user.did)}`,
134
134
+
() => HttpResponse.json(dummyDidDocument(user.did)),
135
135
+
),
136
136
+
http.get(
137
137
+
"https://pds.example.com/xrpc/com.atproto.repo.getRecord",
109
138
() => HttpResponse.json({}, { status: 400 }),
110
139
),
111
140
);
112
141
// act
113
113
-
const actual = await boardService.findOrFetchBoard("did:plc:example");
142
142
+
const actual = await boardService.findOrFetchBoard(user.did);
114
143
// assert
115
144
expect(mockedLogger.warn).toHaveBeenCalledWith(
116
145
"PDSからのboardの取得に失敗しました",
-5
vitest/vitest.setup.ts
···
5
5
afterEach(() => {
6
6
vi.useRealTimers();
7
7
});
8
8
-
vi.mock("~/utils/env", () => ({
9
9
-
env: {
10
10
-
BSKY_PUBLIC_API_URL: "https://public.api.example.com",
11
11
-
},
12
12
-
}));
13
8
14
9
// prisma
15
10
vi.mock("~/server/service/prisma", () => ({