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