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