tdd : picking system - create picking list
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
package com.example.pickingtdd.entity;
|
||||
|
||||
public enum OrderStateEnum {
|
||||
ORDERED, PENDING, PICKING, DONE
|
||||
ORDERED, LISTED, PENDING, PICKING, DONE
|
||||
}
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.example.pickingtdd.entity;
|
||||
|
||||
public class Picker {
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.example.pickingtdd.entity;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class PickingList {
|
||||
private Long id;
|
||||
private Long orderId;
|
||||
private Map<Sku, Integer> skuAmountMap;
|
||||
private PickingStateEnum state;
|
||||
private Picker picker;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.example.pickingtdd.entity;
|
||||
|
||||
public enum PickingStateEnum {
|
||||
NOTASSIGNED
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
package com.example.pickingtdd.service;
|
||||
|
||||
import com.example.pickingtdd.entity.Order;
|
||||
import com.example.pickingtdd.entity.OrderStateEnum;
|
||||
|
||||
public interface OrderService {
|
||||
|
||||
Order createOrder(Order order) throws Exception;
|
||||
boolean changeOrderState(Order order, OrderStateEnum state);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.example.pickingtdd.service;
|
||||
|
||||
import com.example.pickingtdd.entity.Order;
|
||||
import com.example.pickingtdd.entity.OrderDetail;
|
||||
import com.example.pickingtdd.entity.OrderStateEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -35,4 +36,9 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean changeOrderState(Order order, OrderStateEnum state) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.example.pickingtdd.service;
|
||||
|
||||
import com.example.pickingtdd.entity.Order;
|
||||
import com.example.pickingtdd.entity.PickingList;
|
||||
|
||||
public interface PickingListService {
|
||||
|
||||
PickingList createPickingList(Order order);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.example.pickingtdd.service;
|
||||
|
||||
import com.example.pickingtdd.entity.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class PickingListServiceImpl implements PickingListService {
|
||||
|
||||
@Autowired
|
||||
OrderService orderService;
|
||||
|
||||
@Override
|
||||
public PickingList createPickingList(Order order) {
|
||||
PickingList pickingList = new PickingList();
|
||||
pickingList.setOrderId(order.getOrderId());
|
||||
pickingList.setState(PickingStateEnum.NOTASSIGNED);
|
||||
|
||||
Map<Sku, Integer> skuAmountMap = new HashMap<>();
|
||||
for (OrderDetail orderDetail : order.getOrderDetailList()) {
|
||||
skuAmountMap.put(orderDetail.getSku(), orderDetail.getAmount());
|
||||
}
|
||||
|
||||
pickingList.setSkuAmountMap(skuAmountMap);
|
||||
|
||||
// Order State Change
|
||||
orderService.changeOrderState(order, OrderStateEnum.LISTED);
|
||||
return pickingList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package com.example.pickingtdd.service;
|
||||
|
||||
import com.example.pickingtdd.entity.*;
|
||||
import org.assertj.core.util.Maps;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.util.Collections;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@SpringBootTest
|
||||
public class PickingListServiceTests {
|
||||
|
||||
@Autowired
|
||||
PickingListService pickingListService;
|
||||
|
||||
Order order;
|
||||
|
||||
@BeforeEach
|
||||
void orderSetup() {
|
||||
order = new Order();
|
||||
order.setOrderId(1L);
|
||||
order.setState(OrderStateEnum.ORDERED);
|
||||
|
||||
OrderDetail orderDetail = new OrderDetail();
|
||||
orderDetail.setOrderDetailId(1L);
|
||||
orderDetail.setOrderId(1L);
|
||||
orderDetail.setAmount(10);
|
||||
orderDetail.setSku(new Sku());
|
||||
|
||||
order.setOrderDetailList(Collections.singletonList(orderDetail));
|
||||
}
|
||||
|
||||
@Test
|
||||
void createPickingList() {
|
||||
PickingList assertPickingList = new PickingList();
|
||||
assertPickingList.setOrderId(1L);
|
||||
assertPickingList.setSkuAmountMap(
|
||||
Maps.newHashMap(
|
||||
order.getOrderDetailList().get(0).getSku(),
|
||||
order.getOrderDetailList().get(0).getAmount()));
|
||||
assertPickingList.setState(PickingStateEnum.NOTASSIGNED);
|
||||
assertPickingList.setPicker(new Picker());
|
||||
|
||||
PickingList pickingList = pickingListService.createPickingList(order);
|
||||
|
||||
assertEquals(assertPickingList.getOrderId(), pickingList.getOrderId());
|
||||
assertEquals(PickingStateEnum.NOTASSIGNED, pickingList.getState());
|
||||
assertEquals(
|
||||
assertPickingList.getSkuAmountMap().get(order.getOrderDetailList().get(0).getSku()),
|
||||
pickingList.getSkuAmountMap().get(order.getOrderDetailList().get(0).getSku()));
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,9 @@ SKU
|
||||
주문 -> 피킹리스트 -> 피커 -> 피킹완료
|
||||
|
||||
------- TO-DO -------
|
||||
[] changeOrderState 메소드 생성
|
||||
|
||||
[v] 피킹 리스트 생성
|
||||
[v] Order validation 에 OrderDetail 검증 추가
|
||||
[v] OrderDetail validation 추가
|
||||
[v] OrderDetail 생성
|
||||
|
||||
Reference in New Issue
Block a user