package org.xmx0632.deliciousfruit.service;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import org.junit.Before;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.xmx0632.deliciousfruit.api.v1.bo.SettlementRequest;
import org.xmx0632.deliciousfruit.api.v1.bo.SettlementRequest.ShoppingItem;
import org.xmx0632.deliciousfruit.api.v1.bo.SettlementResponse;
import org.xmx0632.deliciousfruit.entity.FruitProduct;
import org.xmx0632.deliciousfruit.entity.FruitPromotion;
import org.xmx0632.deliciousfruit.entity.FruitPromotion.PromotionType;
import org.xmx0632.deliciousfruit.global.ConfigConstant;
import org.xmx0632.deliciousfruit.utilities.date.DateUtil;
public class BaseIosOrderServiceTestCase {
protected static final String TRANSACTION_ID = "transactionID";
protected static final Long productId_1 = 1111l;
protected static final Long productId_2 = 2222l;
protected static final Long productId_3 = 3333l;
protected static final String promotion_productId_1 = "promotion_productId_1";
protected static final String promotion_productId_2 = "promotion_productId_2";
@InjectMocks
protected IosOrderService iosOrderService;
@Mock
protected FruitPromotionService fruitPromotionService;
@Mock
protected TransactionIDService transactionIDService;
@Mock
protected FruitProductService fruitProductService;
@Mock
protected DateUtil dateUtil;
@Mock
protected ConfigService configService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
// 写死当前时间为空
Mockito.when(dateUtil.getCurrentDate("yyyy-MM-dd HH")).thenReturn(null);
Mockito.when(configService.getByName(ConfigConstant.TOTAL_DEDUCT_FIRST))
.thenReturn("true");
}
protected SettlementResponse getResponseWith2DifferentProducts(
int productNum1, int productNum2) {
// verify
SettlementRequest settlementRequest = new SettlementRequest();
settlementRequest.setTransactionID(TRANSACTION_ID);
List<ShoppingItem> shoppingList = Arrays.asList(new ShoppingItem[] {
new ShoppingItem(productId_1.toString(), productNum1),
new ShoppingItem(productId_2.toString(), productNum2) });
settlementRequest.setShoppingList(shoppingList);
SettlementResponse response = iosOrderService
.caculatePromotionInfo(settlementRequest);
System.out.println(response);
return response;
}
protected SettlementResponse getResponseWith3DifferentProducts(
int productNum1, int productNum2, int productNum3) {
// verify
SettlementRequest settlementRequest = new SettlementRequest();
settlementRequest.setTransactionID(TRANSACTION_ID);
List<ShoppingItem> shoppingList = Arrays.asList(new ShoppingItem[] {
new ShoppingItem(productId_1.toString(), productNum1),
new ShoppingItem(productId_2.toString(), productNum2),
new ShoppingItem(productId_3.toString(), productNum3) });
settlementRequest.setShoppingList(shoppingList);
SettlementResponse response = iosOrderService
.caculatePromotionInfo(settlementRequest);
System.out.println(response);
return response;
}
protected SettlementResponse getResponse4WithSameProduct(int productNum) {
// verify
SettlementRequest settlementRequest = new SettlementRequest();
settlementRequest.setTransactionID(TRANSACTION_ID);
ShoppingItem shoppingItem = new ShoppingItem(productId_1.toString(),
productNum);
List<ShoppingItem> shoppingList = Arrays
.asList(new ShoppingItem[] { shoppingItem });
settlementRequest.setShoppingList(shoppingList);
SettlementResponse response = iosOrderService
.caculatePromotionInfo(settlementRequest);
System.out.println(response);
return response;
}
protected void mockFruitProductService(String productName, String spec,
Long id, BigDecimal deductForSecond, BigDecimal price) {
FruitProduct fruitProduct = IosOrderServiceTestHelper
.setupFruitProduct(productName, spec, id, deductForSecond,
price);
Mockito.when(fruitProductService.findByProductId(id.toString()))
.thenReturn(fruitProduct);
}
protected FruitPromotion getFruitPromotion(PromotionType promotionType,
Long productId, String promotionProductId, String promotionName,
int promotionThreshold, BigDecimal productPrice,
BigDecimal totalPriceoff, BigDecimal priceOff, BigDecimal totalGift) {
return IosOrderServiceTestHelper.getFruitPromotion(promotionType,
productId, promotionProductId, promotionName,
promotionThreshold, productPrice, totalPriceoff, priceOff,
totalGift);
}
}