package org.xmx0632.deliciousfruit.service; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.xmx0632.deliciousfruit.erp.ErpApiService; import org.xmx0632.deliciousfruit.erp.bo.DeductionMessage; import org.xmx0632.deliciousfruit.erp.bo.ErpChangeCard; import org.xmx0632.deliciousfruit.erp.bo.ErpChangeCash; import org.xmx0632.deliciousfruit.erp.bo.ErpChangeCoin; import org.xmx0632.deliciousfruit.erp.bo.ErpChangePoint; import org.xmx0632.deliciousfruit.erp.bo.ErpMessage; /** * * 测试抵扣ERP的抵扣券/礼品卡/积分/账户余额等,记录每个消息的发送状态 * * @author mars * */ public class DeductionPayServiceSendDeductionPayMessageTest { @InjectMocks protected DeductionPayService deductionPayService; @Mock protected ErpApiService erpApiService; private ErpChangeCard changeCard = new ErpChangeCard("0001", "33"); private ErpChangeCash changeCash = new ErpChangeCash("002", 1); private ErpChangePoint changePoint = new ErpChangePoint("cid", "10"); private ErpChangeCoin changeCoin = new ErpChangeCoin("cid", "10"); @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); } // 发送抵扣消息成功,判断对应的消息状态 @Test public void testSendDeductionPayMessage4AllSuccess() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(true); Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(true); Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(true); Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionMessage.setPayByPoint(changePoint); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertTrue(erpChangeCashList.get(0).hasSent()); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertTrue(erpChangeCoin.hasSent()); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertTrue(erpChangePoint.hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4AllError_1() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(false); Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(true); Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(true); Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionMessage.setPayByPoint(changePoint); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertFalse(erpChangeCardList.get(0).hasSent()); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertFalse(erpChangeCashList.get(0).hasSent()); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertFalse(erpChangeCoin.hasSent()); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertFalse(erpChangePoint.hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4AllError_2() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(true); Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(false); Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(true); Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionMessage.setPayByPoint(changePoint); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertFalse(erpChangeCashList.get(0).hasSent()); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertFalse(erpChangeCoin.hasSent()); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertFalse(erpChangePoint.hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4AllError_3() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(true); Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(true); Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(false); Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionMessage.setPayByPoint(changePoint); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertTrue(erpChangeCashList.get(0).hasSent()); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertFalse(erpChangePoint.hasSent()); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertFalse(erpChangeCoin.hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4AllError_4() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(true); Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(true); Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(true); Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionMessage.setPayByPoint(changePoint); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertTrue(erpChangeCashList.get(0).hasSent()); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertTrue(erpChangePoint.hasSent()); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertFalse(erpChangeCoin.hasSent()); } // 发送抵扣消息成功,判断对应的消息状态 @Test public void testSendDeductionPayMessage4CashCouponSuccess() { Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertTrue(erpChangeCashList.get(0).hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4CashCouponError() { Mockito.when(erpApiService.changeCash(changeCash)).thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCash(new ErpMessage<ErpChangeCash>( changeCash)); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertFalse(erpChangeCashList.get(0).hasSent()); } // 发送抵扣消息成功,判断对应的消息状态 @Test public void testSendDeductionPayMessage4GiftCardSuccess() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4GiftCardError() { Mockito.when(erpApiService.changeCard(changeCard)).thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.addErpChangeCard(new ErpMessage<ErpChangeCard>( changeCard)); deductionPayService.sendDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertFalse(erpChangeCardList.get(0).hasSent()); } // 发送抵扣消息成功,判断对应的消息状态 @Test public void testSendDeductionPayMessage4PointSuccess() { Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.setPayByPoint(changePoint); deductionPayService.sendDeductionPayMessage(deductionMessage); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertTrue(erpChangePoint.hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4PointError() { Mockito.when(erpApiService.changePoint(changePoint)).thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.setPayByPoint(changePoint); deductionPayService.sendDeductionPayMessage(deductionMessage); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertFalse(erpChangePoint.hasSent()); } // 发送抵扣消息成功,判断对应的消息状态 @Test public void testSendDeductionPayMessage4CoinSuccess() { Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertTrue(erpChangeCoin.hasSent()); } // 发送抵扣消息失败,判断对应的消息状态 @Test public void testSendDeductionPayMessage4CoinError() { Mockito.when(erpApiService.changeCoin(changeCoin)).thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); deductionMessage.setPayFromAccount(changeCoin); deductionPayService.sendDeductionPayMessage(deductionMessage); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertFalse(erpChangeCoin.hasSent()); } }