Skip to content

Commit bad1c65

Browse files
committed
#4 fix: 요구사항 2단계 구매 당시 가격 정보 테스트
- 구매한 용품, 예약한 용품 목록 조회시 제품 구매할때의 가격 표시
1 parent 88bd036 commit bad1c65

File tree

6 files changed

+124
-31
lines changed

6 files changed

+124
-31
lines changed

src/main/java/sample/market/domain/product/ProductServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public List<ProductInfo> retrieveReservedProductsByBuyer(RetrieveReservedProduct
7373
List<Long> productIds = orders.stream()
7474
.map(Order::getProductId)
7575
.toList();
76-
List<Product> products = productReader.getReservedProductsByIds(productIds);
76+
List<Product> products = productReader.getProductListByIds(productIds);
7777
List<ProductInfo> productInfos = productInfoMapper.toProductInfos(products, prices);
7878
return productInfos;
7979
}

src/test/java/sample/market/domain/order/OrderReaderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ void getPurchasedProducts() {
110110
orderStore.store(order);
111111

112112
// when
113-
List<Order> orders = orderReader.getCompletedProducts(buyer.getId());
113+
List<Order> orders = orderReader.getOrdersComplete(buyer.getId());
114114

115115
// then
116116
assertThat(orders).hasSize(1)
@@ -155,7 +155,7 @@ void getInitProducts() {
155155
orderStore.store(order);
156156

157157
// when
158-
List<Order> orders = orderReader.getInitProducts(buyer.getId());
158+
List<Order> orders = orderReader.getOrdersInit(buyer.getId());
159159

160160
// then
161161
assertThat(orders).hasSize(1)

src/test/java/sample/market/domain/order/OrderServiceTest.java

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ void registerOrder() {
7878
OrderCommand.RegisterOrder command = OrderCommand.RegisterOrder.builder()
7979
.buyerId(buyer.getId())
8080
.productId(product1.getId())
81-
.price(product1.getPrice())
8281
.build();
8382

8483
// when
@@ -130,17 +129,15 @@ void retrieveCompletedOrders() {
130129
OrderCommand.RegisterOrder orderCommand1 = OrderCommand.RegisterOrder.builder()
131130
.buyerId(buyer.getId())
132131
.productId(product1.getId())
133-
.price(product1.getPrice())
134132
.build();
135133

136134
OrderCommand.RegisterOrder orderCommand2 = OrderCommand.RegisterOrder.builder()
137135
.buyerId(buyer.getId())
138136
.productId(product2.getId())
139-
.price(product2.getPrice())
140137
.build();
141138

142-
Order order1 = orderCommand1.toEntity();
143-
Order order2 = orderCommand2.toEntity();
139+
Order order1 = orderCommand1.toEntity(product1.getPrice());
140+
Order order2 = orderCommand2.toEntity(product2.getPrice());
144141

145142
order1.complete();
146143
order2.complete();
@@ -198,17 +195,15 @@ void retrieveInitOrders() {
198195
OrderCommand.RegisterOrder orderCommand1 = OrderCommand.RegisterOrder.builder()
199196
.buyerId(buyer.getId())
200197
.productId(product1.getId())
201-
.price(product1.getPrice())
202198
.build();
203199

204200
OrderCommand.RegisterOrder orderCommand2 = OrderCommand.RegisterOrder.builder()
205201
.buyerId(buyer.getId())
206202
.productId(product2.getId())
207-
.price(product2.getPrice())
208203
.build();
209204

210-
Order order1 = orderCommand1.toEntity();
211-
Order order2 = orderCommand2.toEntity();
205+
Order order1 = orderCommand1.toEntity(product1.getPrice());
206+
Order order2 = orderCommand2.toEntity(product2.getPrice());
212207

213208
orderStore.store(order1);
214209
orderStore.store(order2);
@@ -462,15 +457,13 @@ void registerOrderByProductReserve() {
462457
OrderCommand.RegisterOrder command1 = OrderCommand.RegisterOrder.builder()
463458
.buyerId(buyer.getId())
464459
.productId(product1.getId())
465-
.price(product1.getPrice())
466460
.build();
467461

468462

469463

470464
OrderCommand.RegisterOrder command2 = OrderCommand.RegisterOrder.builder()
471465
.buyerId(buyer.getId())
472466
.productId(product1.getId())
473-
.price(product1.getPrice())
474467
.build();
475468

476469
// approve 상태가 하나 존재하므로 product 상태는 예약중이다.
@@ -552,15 +545,13 @@ void registerOrderByProductComplete() {
552545
OrderCommand.RegisterOrder command1 = OrderCommand.RegisterOrder.builder()
553546
.buyerId(buyer.getId())
554547
.productId(product1.getId())
555-
.price(product1.getPrice())
556548
.build();
557549

558550

559551

560552
OrderCommand.RegisterOrder command2 = OrderCommand.RegisterOrder.builder()
561553
.buyerId(buyer.getId())
562554
.productId(product1.getId())
563-
.price(product1.getPrice())
564555
.build();
565556

566557
// approve 상태가 하나 존재하므로 product 상태는 예약중이다.

src/test/java/sample/market/domain/product/ProductReaderTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.springframework.beans.factory.annotation.Autowired;
1010
import org.springframework.boot.test.context.SpringBootTest;
1111
import org.springframework.transaction.annotation.Transactional;
12+
import sample.market.domain.order.Order;
13+
import sample.market.domain.order.OrderStore;
1214
import sample.market.domain.product.Product.Status;
1315
import sample.market.domain.user.User;
1416
import sample.market.domain.user.UserStore;
@@ -25,6 +27,9 @@ class ProductReaderTest {
2527
@Autowired
2628
private ProductReader productReader;
2729

30+
@Autowired
31+
private OrderStore orderStore;
32+
2833
@DisplayName("등록된 제품에는 예약상태를 포함한다.")
2934
@Test
3035
void withProductStatus() {
@@ -63,7 +68,16 @@ void getReservedProductsBySellerId() {
6368
.role("user")
6469
.username("username")
6570
.build();
71+
72+
User buyer = User.builder()
73+
74+
.password("password")
75+
.role("user")
76+
.username("username")
77+
.build();
78+
6679
userStore.store(seller);
80+
userStore.store(buyer);
6781

6882
Product product1 = Product.builder()
6983
.price(1000)
@@ -73,6 +87,15 @@ void getReservedProductsBySellerId() {
7387
product1.reserved();
7488
productStore.store(product1);
7589

90+
Order order1 = Order.builder()
91+
.buyerId(buyer.getId())
92+
.productId(product1.getId())
93+
.price(product1.getPrice())
94+
.build();
95+
order1.reserve();
96+
orderStore.store(order1);
97+
98+
7699
// when
77100
List<Product> products = productReader.getReservedProductsBySellerId(seller.getId());
78101

src/test/java/sample/market/domain/product/ProductServiceTest.java

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,38 +133,59 @@ void register() {
133133
assertThat(productInfo.getPrice()).isEqualTo(product1.getPrice());
134134
}
135135

136-
@DisplayName("sellerId와 status로 상품을 조회한다.")
136+
@DisplayName("구매 상품 조회시 구매시 가격을 나타냅니다.")
137137
@Test
138-
void retrieveReservedProductsBySeller() {
138+
void retrievePurchasedProducts() {
139139
// given
140140
User seller = User.builder()
141141
142142
.password("password")
143143
.role("user")
144144
.username("username")
145145
.build();
146+
User buyer = User.builder()
147+
148+
.password("password")
149+
.role("user")
150+
.username("buyer")
151+
.build();
146152
userStore.store(seller);
153+
userStore.store(buyer);
154+
155+
int originalPrice = 1000;
156+
int changePrice = 2000;
147157

148158
Product product1 = Product.builder()
149-
.price(1000)
159+
.price(originalPrice)
150160
.name("마스크")
151161
.sellerId(seller.getId())
152162
.build();
153163
product1.reserved();
154164
productStore.store(product1);
155165

156-
ProductCommand.RetrieveReservedProductsBySeller command = ProductCommand.RetrieveReservedProductsBySeller.builder()
157-
.sellerId(seller.getId())
166+
Order order = Order.builder()
167+
.price(originalPrice)
168+
.productId(product1.getId())
169+
.buyerId(buyer.getId())
170+
.build();
171+
order.complete();
172+
orderStore.store(order);
173+
174+
ProductCommand.RetrievePurchaseProduct command = ProductCommand.RetrievePurchaseProduct.builder()
175+
.buyerId(buyer.getId())
158176
.build();
159177

160178
// when
161-
List<ProductInfo> productInfos = productService.retrieveReservedProductsBySeller(command);
179+
product1.changePrice(changePrice);
180+
productStore.store(product1);
181+
182+
List<ProductInfo> productInfos = productService.retrievePurchasedProducts(command);
162183

163184
// then
164185
assertThat(productInfos).hasSize(1)
165-
.extracting("sellerId", "name", "price", "status")
186+
.extracting("name", "purchasePrice")
166187
.containsExactlyInAnyOrder(
167-
tuple(seller.getId(), product1.getName(), product1.getPrice(), product1.getStatus())
188+
tuple(product1.getName(), originalPrice)
168189
);
169190
}
170191

@@ -187,19 +208,20 @@ void retrieveReservedProductsByBuyer() {
187208
userStore.store(seller);
188209
userStore.store(buyer);
189210

211+
int originalPrice = 1000;
212+
int changePrice = 2000;
213+
190214
Product product1 = Product.builder()
191-
.price(1000)
215+
.price(originalPrice)
192216
.name("마스크")
193217
.sellerId(seller.getId())
194218
.build();
195219

196220
Product product2 = Product.builder()
197-
.price(3000)
221+
.price(originalPrice)
198222
.name("충전기")
199223
.sellerId(seller.getId())
200224
.build();
201-
product1.reserved();
202-
product2.reserved();
203225
productStore.storeAll(List.of(product1, product2));
204226

205227
Order order1 = Order.builder()
@@ -213,6 +235,8 @@ void retrieveReservedProductsByBuyer() {
213235
.productId(product2.getId())
214236
.price(product2.getPrice())
215237
.build();
238+
order1.reserve();
239+
order2.reserve();
216240
orderStore.store(order1);
217241
orderStore.store(order2);
218242

@@ -221,14 +245,17 @@ void retrieveReservedProductsByBuyer() {
221245
.build();
222246

223247
// when
248+
product1.changePrice(changePrice);
249+
productStore.store(product1);
250+
224251
List<ProductInfo> productInfos = productService.retrieveReservedProductsByBuyer(command);
225252

226253
// then
227254
assertThat(productInfos).hasSize(2)
228-
.extracting("sellerId", "name", "price", "status")
255+
.extracting("name", "purchasePrice")
229256
.containsExactlyInAnyOrder(
230-
tuple(seller.getId(), product1.getName(), product1.getPrice(), product1.getStatus()),
231-
tuple(seller.getId(), product2.getName(), product2.getPrice(), product2.getStatus())
257+
tuple(product1.getName(), originalPrice),
258+
tuple(product2.getName(), originalPrice)
232259
);
233260
}
234261

src/test/java/sample/market/infrastructure/product/ProductRepositoryTest.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import org.springframework.beans.factory.annotation.Autowired;
1010
import org.springframework.boot.test.context.SpringBootTest;
1111
import org.springframework.transaction.annotation.Transactional;
12+
import sample.market.domain.order.Order;
13+
import sample.market.domain.order.OrderStore;
1214
import sample.market.domain.product.Product;
1315
import sample.market.domain.product.Product.Status;
1416
import sample.market.domain.product.ProductStore;
@@ -28,6 +30,9 @@ class ProductRepositoryTest {
2830
@Autowired
2931
private ProductRepository productRepository;
3032

33+
@Autowired
34+
private OrderStore orderStore;
35+
3136
@DisplayName("상품 id 리스트로 상품을 조회한다.")
3237
@Test
3338
void findAllByIdIn() {
@@ -147,4 +152,51 @@ void findAllByIdInAndStatus() {
147152
}
148153

149154

155+
@DisplayName("판매자가 예약된 상품을 조회합니다..")
156+
@Test
157+
void findProductInfoJoinedOrderBySellerId() {
158+
// given
159+
User seller = User.builder()
160+
161+
.password("password")
162+
.role("user")
163+
.username("username")
164+
.build();
165+
User buyer = User.builder()
166+
167+
.password("password")
168+
.role("user")
169+
.username("username")
170+
.build();
171+
userStore.store(seller);
172+
userStore.store(buyer);
173+
174+
Product product1 = Product.builder()
175+
.price(1000)
176+
.name("마스크")
177+
.sellerId(seller.getId())
178+
.build();
179+
productStore.store(product1);
180+
181+
Order order = Order.builder()
182+
.productId(product1.getId())
183+
.price(1000)
184+
.buyerId(buyer.getId())
185+
.build();
186+
order.reserve();
187+
orderStore.store(order);
188+
189+
190+
// when
191+
List<Product> products = productRepository.findProductInfoJoinedOrderBySellerId(seller.getId());
192+
193+
// then
194+
assertThat(products).hasSize(1)
195+
.extracting("id", "name", "price", "status", "sellerId")
196+
.containsExactlyInAnyOrder(
197+
tuple(products.get(0).getId(), products.get(0).getName(), products.get(0).getPrice(), products.get(0).getStatus(), products.get(0).getSellerId())
198+
);
199+
}
200+
201+
150202
}

0 commit comments

Comments
 (0)