tdd : picking system - create picking list

This commit is contained in:
haerong22
2021-08-04 23:46:46 +09:00
parent a756ce4c99
commit fbee19e861
10 changed files with 135 additions and 1 deletions

View File

@@ -1,5 +1,5 @@
package com.example.pickingtdd.entity;
public enum OrderStateEnum {
ORDERED, PENDING, PICKING, DONE
ORDERED, LISTED, PENDING, PICKING, DONE
}

View File

@@ -0,0 +1,4 @@
package com.example.pickingtdd.entity;
public class Picker {
}

View File

@@ -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;
}

View File

@@ -0,0 +1,5 @@
package com.example.pickingtdd.entity;
public enum PickingStateEnum {
NOTASSIGNED
}

View File

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

View File

@@ -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;
}
}

View File

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

View File

@@ -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;
}
}

View File

@@ -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()));
}
}

View File

@@ -8,7 +8,9 @@ SKU
주문 -> 피킹리스트 -> 피커 -> 피킹완료
------- TO-DO -------
[] changeOrderState 메소드 생성
[v] 피킹 리스트 생성
[v] Order validation 에 OrderDetail 검증 추가
[v] OrderDetail validation 추가
[v] OrderDetail 생성