Create your Link in Bio for Bluesky

テスト修正

+38 -10
+4
.env.test
··· 1 + # bsky 2 + BSKY_PUBLIC_API_URL=https://public.api.example.com 3 + ATPROTO_PLC_URL=https://plc.example.com 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 + const dummyDidDocument = (did: string) => ({ 31 + "@context": [ 32 + "https://www.w3.org/ns/did/v1", 33 + "https://w3id.org/security/suites/secp256k1-2019/v1", 34 + ], 35 + id: did, 36 + service: [ 37 + { 38 + id: "#atproto_pds", 39 + type: "AtprotoPersonalDataServer", 40 + serviceEndpoint: "https://pds.example.com", 41 + }, 42 + ], 43 + }); 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 - "https://public.api.example.com/xrpc/com.atproto.repo.getRecord", 89 + `https://plc.example.com/${encodeURIComponent(user.did)}`, 90 + () => HttpResponse.json(dummyDidDocument(user.did)), 91 + ), 92 + http.get( 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 + const user = await UserFactory.create(); 85 105 server.use( 86 106 http.get( 87 - "https://public.api.example.com/xrpc/com.atproto.repo.getRecord", 107 + `https://plc.example.com/${encodeURIComponent(user.did)}`, 108 + () => HttpResponse.json(dummyDidDocument(user.did)), 109 + ), 110 + http.get( 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 - const actual = await boardService.findOrFetchBoard("did:plc:example"); 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 + const user = await UserFactory.create(); 106 131 server.use( 107 132 http.get( 108 - "https://public.api.example.com/xrpc/com.atproto.repo.getRecord", 133 + `https://plc.example.com/${encodeURIComponent(user.did)}`, 134 + () => HttpResponse.json(dummyDidDocument(user.did)), 135 + ), 136 + http.get( 137 + "https://pds.example.com/xrpc/com.atproto.repo.getRecord", 109 138 () => HttpResponse.json({}, { status: 400 }), 110 139 ), 111 140 ); 112 141 // act 113 - const actual = await boardService.findOrFetchBoard("did:plc:example"); 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 - vi.mock("~/utils/env", () => ({ 9 - env: { 10 - BSKY_PUBLIC_API_URL: "https://public.api.example.com", 11 - }, 12 - })); 13 8 14 9 // prisma 15 10 vi.mock("~/server/service/prisma", () => ({