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 DeductionPayServiceRollbackDeductionPayMessageTest { @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 testRollbackDeductionPayMessage4CashCoupon() { Mockito.when(erpApiService.changeCash(changeCash.getRollback())) .thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangeCash> erpMessage = new ErpMessage<ErpChangeCash>( changeCash); erpMessage.setHasSent(true); deductionMessage.addErpChangeCash(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertTrue(erpChangeCashList.get(0).hasSent()); assertTrue(erpChangeCashList.get(0).hasRollback()); } @Test public void testRollbackDeductionPayMessage4CashCouponError() { Mockito.when(erpApiService.changeCash(changeCash.getRollback())) .thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangeCash> erpMessage = new ErpMessage<ErpChangeCash>( changeCash); erpMessage.setHasSent(true); deductionMessage.addErpChangeCash(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCash>> erpChangeCashList = deductionMessage .getErpChangeCashList(); assertTrue(erpChangeCashList.get(0).hasSent()); assertFalse(erpChangeCashList.get(0).hasRollback()); } // 根据每个消息状态,判断调用回滚消息发送次数 @Test public void testRollbackDeductionPayMessage4GiftCard() { Mockito.when(erpApiService.changeCard(changeCard.getRollback())) .thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangeCard> erpMessage = new ErpMessage<ErpChangeCard>( changeCard); erpMessage.setHasSent(true); deductionMessage.addErpChangeCard(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); assertTrue(erpChangeCardList.get(0).hasRollback()); } // 根据每个消息状态,判断调用回滚消息发送次数 @Test public void testRollbackDeductionPayMessage4GiftCardError() { Mockito.when(erpApiService.changeCard(changeCard.getRollback())) .thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangeCard> erpMessage = new ErpMessage<ErpChangeCard>( changeCard); erpMessage.setHasSent(true); deductionMessage.addErpChangeCard(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); List<ErpMessage<ErpChangeCard>> erpChangeCardList = deductionMessage .getErpChangeCardList(); assertTrue(erpChangeCardList.get(0).hasSent()); assertFalse(erpChangeCardList.get(0).hasRollback()); } // 根据每个消息状态,判断调用回滚消息发送次数 @Test public void testRollbackDeductionPayMessage4Point() { Mockito.when(erpApiService.changePoint(changePoint.getRollback())) .thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangePoint> erpMessage = new ErpMessage<ErpChangePoint>( changePoint); erpMessage.setHasSent(true); deductionMessage.setErpChangePoint(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertTrue(erpChangePoint.hasSent()); assertTrue(erpChangePoint.hasRollback()); } @Test public void testRollbackDeductionPayMessage4PointError() { Mockito.when(erpApiService.changePoint(changePoint.getRollback())) .thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangePoint> erpMessage = new ErpMessage<ErpChangePoint>( changePoint); erpMessage.setHasSent(true); deductionMessage.setErpChangePoint(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); ErpMessage<ErpChangePoint> erpChangePoint = deductionMessage .getErpChangePoint(); assertTrue(erpChangePoint.hasSent()); assertFalse(erpChangePoint.hasRollback()); } // 根据每个消息状态,判断调用回滚消息发送次数 @Test public void testRollbackDeductionPayMessage4Coin() { Mockito.when(erpApiService.changeCoin(changeCoin.getRollback())) .thenReturn(true); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangeCoin> erpMessage = new ErpMessage<ErpChangeCoin>( changeCoin); erpMessage.setHasSent(true); deductionMessage.setErpChangeCoin(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertTrue(erpChangeCoin.hasSent()); assertTrue(erpChangeCoin.hasRollback()); } @Test public void testRollbackDeductionPayMessage4CoinError() { Mockito.when(erpApiService.changeCoin(changeCoin.getRollback())) .thenReturn(false); DeductionMessage deductionMessage = new DeductionMessage(); ErpMessage<ErpChangeCoin> erpMessage = new ErpMessage<ErpChangeCoin>( changeCoin); erpMessage.setHasSent(true); deductionMessage.setErpChangeCoin(erpMessage); assertTrue(erpMessage.hasSent()); assertFalse(erpMessage.hasRollback()); deductionPayService.rollbackDeductionPayMessage(deductionMessage); ErpMessage<ErpChangeCoin> erpChangeCoin = deductionMessage .getErpChangeCoin(); assertTrue(erpChangeCoin.hasSent()); assertFalse(erpChangeCoin.hasRollback()); } }