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, }); });