From a8fd88ba9d21f317bf4c41d19615dbd7f1345e82 Mon Sep 17 00:00:00 2001 From: chanwoo7 Date: Wed, 24 Jun 2026 04:29:50 +0900 Subject: [PATCH] =?UTF-8?q?fix(store):=20storeReviews=EC=9D=98=200=20?= =?UTF-8?q?=EA=B0=92=20cursor=EB=A5=BC=20=EB=B3=B4=EC=A1=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit storeProducts(#158)와 동일하게 parseId("0")=0n이 args.cursor truthiness 체크에서 falsy로 떨어져 zero cursor가 페이지를 리셋하던 문제를 수정한다. listStoreReviews의 cursor 분기를 !== undefined로 바꾼다. --- .../store/repositories/store-review.repository.ts | 4 +++- .../store/services/store-review.service.spec.ts | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/features/store/repositories/store-review.repository.ts b/src/features/store/repositories/store-review.repository.ts index 4c7c96e..2931f5c 100644 --- a/src/features/store/repositories/store-review.repository.ts +++ b/src/features/store/repositories/store-review.repository.ts @@ -45,7 +45,9 @@ export class StoreReviewRepository { deleted_at: null, // storeDetail과 동일하게 비활성/삭제 매장의 리뷰는 노출하지 않는다 store: { is_active: true, deleted_at: null }, - ...(args.cursor ? { id: { lt: args.cursor } } : {}), + // 0n도 유효 인자(parseId("0")=0n). truthiness는 0n을 falsy로 떨궈 + // zero cursor가 페이지를 리셋하므로 undefined로만 분기한다. + ...(args.cursor !== undefined ? { id: { lt: args.cursor } } : {}), }, select: { id: true, diff --git a/src/features/store/services/store-review.service.spec.ts b/src/features/store/services/store-review.service.spec.ts index 4cb9587..ade210e 100644 --- a/src/features/store/services/store-review.service.spec.ts +++ b/src/features/store/services/store-review.service.spec.ts @@ -201,4 +201,16 @@ describe('StoreReviewService (real DB)', () => { expect(result.items[0].authorNickname).toBeNull(); }); + + it('cursor "0"은 페이지를 리셋하지 않고 빈 결과를 반환한다', async () => { + const store = await createStore(prisma); + await makeReview(store.id, {}); + + const result = await service.storeReviews({ + storeId: store.id.toString(), + cursor: '0', + }); + + expect(result.items).toEqual([]); + }); });