From aa643ea27bcb5b4f39a667606ace2f3ff13bebcb Mon Sep 17 00:00:00 2001 From: chanwoo7 Date: Thu, 20 Aug 2026 03:05:16 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=A6=B4=EB=A6=AC=EC=A6=88=20=EB=A6=AC?= =?UTF-8?q?=EB=B7=B0=20=EB=B0=98=EC=98=81=20(ReviewableOrderItemRow=20?= =?UTF-8?q?=EB=AA=85=EC=8B=9C=20=ED=83=80=EC=9E=85=C2=B7=EB=A7=A4=ED=95=91?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B3=B4=EA=B0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - listReviewableOrderItems 반환 타입을 명시적 row 인터페이스 (ReviewableOrderItemRow)로 선언해 UserReviewService 매핑 계약을 고정 (레포의 다른 repository row 타입 컨벤션과 통일). - 카드 매핑 테스트에 productId·pickedUpAt(고정 시각) 검증 추가. --- .../order/repositories/order.repository.ts | 17 ++++++++++++++++- .../user/services/user-review.service.spec.ts | 10 ++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/features/order/repositories/order.repository.ts b/src/features/order/repositories/order.repository.ts index 7dab92c..b3f6bf6 100644 --- a/src/features/order/repositories/order.repository.ts +++ b/src/features/order/repositories/order.repository.ts @@ -41,6 +41,21 @@ export interface OngoingOrderRow { }[]; } +/** 리뷰 작성 가능 주문 아이템 row. UserReviewService 매핑 입력. */ +export interface ReviewableOrderItemRow { + id: bigint; + product_id: bigint; + product_name_snapshot: string; + order: { picked_up_at: Date | null } | null; + product: { images: { image_url: string }[] } | null; + store: { + store_name: string; + address_city: string | null; + address_neighborhood: string | null; + region: { name: string } | null; + } | null; +} + @Injectable() export class OrderRepository { constructor(private readonly prisma: PrismaService) {} @@ -183,7 +198,7 @@ export class OrderRepository { accountId: bigint; offset: number; limit: number; - }) { + }): Promise<{ items: ReviewableOrderItemRow[]; totalCount: number }> { const where = { deleted_at: null, order: { diff --git a/src/features/user/services/user-review.service.spec.ts b/src/features/user/services/user-review.service.spec.ts index 78d1b00..f5f1a8e 100644 --- a/src/features/user/services/user-review.service.spec.ts +++ b/src/features/user/services/user-review.service.spec.ts @@ -604,16 +604,26 @@ describe('UserReviewService (real DB)', () => { where: { id: setup.storeId }, data: { address_city: '인천', address_neighborhood: '청라동' }, }); + const pickedUpAt = new Date('2026-08-15T05:00:00.000Z'); + const orderItem = await prisma.orderItem.findUniqueOrThrow({ + where: { id: setup.orderItemId }, + }); + await prisma.order.update({ + where: { id: orderItem.order_id }, + data: { picked_up_at: pickedUpAt }, + }); const [item] = (await service.myReviewableOrderItems(setup.accountId)) .items; expect(item).toMatchObject({ orderItemId: setup.orderItemId.toString(), + productId: setup.productId.toString(), productName: '상품R 스냅샷', productImageUrl: 'https://img/review-target.png', storeName: '매장R', regionLabel: '인천 청라동', + pickedUpAt, }); });