From ef4a589a7bc1252b87d8cab916057381923878ed Mon Sep 17 00:00:00 2001 From: Hide_D Date: Fri, 23 Jan 2026 12:18:48 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=EA=B2=BD=EB=A7=A4=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=97=90=EC=84=9C=20=ED=84=B4=20?= =?UTF-8?q?=EB=8D=B0=EB=AA=AC=20=EB=9D=BC=EC=9D=B4=ED=94=84=EC=82=AC?= =?UTF-8?q?=EC=9D=B4=ED=81=B4=20=EA=B4=80=EB=A6=AC=20=EB=B0=8F=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EB=B2=A0=EC=9D=B4=EC=8A=A4=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/auctionFlow.test.ts | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tools/integration-tests/test/auctionFlow.test.ts b/tools/integration-tests/test/auctionFlow.test.ts index 360f26e3..df454c6d 100644 --- a/tools/integration-tests/test/auctionFlow.test.ts +++ b/tools/integration-tests/test/auctionFlow.test.ts @@ -406,6 +406,22 @@ describe('auction integration flow', () => { data: { gold: 50, rice: 1000 }, }); + if (turnDaemon) { + await turnDaemon.lifecycle.stop('integration-test'); + await turnDaemon.close(); + await turnDaemonLoop; + } + const gameDatabaseUrl = resolvePostgresConfigFromEnv({ schema: 'che' }).url; + const gatewayDatabaseUrl = resolvePostgresConfigFromEnv({ schema: 'public' }).url; + turnDaemon = await createTurnDaemonRuntime({ + profile: 'che', + profileName: 'che:2', + databaseUrl: gameDatabaseUrl, + gatewayDatabaseUrl, + }); + turnDaemonLoop = turnDaemon.lifecycle.start(); + await sleep(500); + const now = new Date(); const initialCloseAt = new Date(now.getTime() + 10_000); const auction = await prisma.auction.create({ @@ -442,7 +458,7 @@ describe('auction integration flow', () => { value: poorBidder.accessToken, }); await expect( - poorClient.auction.bidBuyRice.mutate({ auctionId: auction.id, amount: 200 }) + poorClient.auction.bidBuyRice.mutate({ auctionId: auction.id, amount: 500 }) ).rejects.toThrow('금이 부족합니다.'); const updatedAuction = await prisma.auction.findUnique({ @@ -488,7 +504,8 @@ describe('auction integration flow', () => { where: { id: bidder1.generalId }, select: { rice: true }, }); - expect(bidderRow?.rice).toBeGreaterThan(1500); + expect(bidderRow).not.toBeNull(); + expect(bidderRow!.rice).toBe(2000); }, 60_000); it('handles unique auction constraints and finalization extension', async () => { @@ -587,6 +604,22 @@ describe('auction integration flow', () => { data: slotUpdate, }); + if (turnDaemon) { + await turnDaemon.lifecycle.stop('integration-test'); + await turnDaemon.close(); + await turnDaemonLoop; + } + const gameDatabaseUrl = resolvePostgresConfigFromEnv({ schema: 'che' }).url; + const gatewayDatabaseUrl = resolvePostgresConfigFromEnv({ schema: 'public' }).url; + turnDaemon = await createTurnDaemonRuntime({ + profile: 'che', + profileName: 'che:2', + databaseUrl: gameDatabaseUrl, + gatewayDatabaseUrl, + }); + turnDaemonLoop = turnDaemon.lifecycle.start(); + await sleep(500); + const finalizeAt = new Date(Date.now() - 1000); await prisma.auction.update({ where: { id: auction.id },