package org.jpos.jposext.isomsgaction.service.support;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.TestCase;
import org.jpos.iso.ISOException;
import org.jpos.iso.ISOMsg;
import org.jpos.jposext.isomsgaction.factory.service.ICustomCondition;
import org.jpos.jposext.isomsgaction.service.IISOMsgAction;
import org.mockito.Mockito;
public class ISOMsgActionIfCustomConditionTest extends TestCase {
private ICustomCondition customCondition;
private ISOMsg[] dummyMsgTab;
private Map<String, Object> dummyActionContext;
private ISOMsgActionIfCustomCondition action;
private IISOMsgAction childAction;
private IISOMsgAction elseAction;
protected void setUp() throws Exception {
super.setUp();
customCondition = Mockito.mock(ICustomCondition.class);
dummyMsgTab = new ISOMsg[] {};
dummyActionContext = new HashMap<String, Object>();
action = new ISOMsgActionIfCustomCondition();
action.setCustomCondition(customCondition);
childAction = Mockito.mock(IISOMsgAction.class);
List<IISOMsgAction> childs = new ArrayList<IISOMsgAction>();
childs.add(childAction);
action.setChilds(childs);
elseAction = Mockito.mock(IISOMsgAction.class);
}
public void testProcess_ConditionFulfilled() throws ISOException {
action.setElseAction(elseAction);
Mockito.when(customCondition.isConditionFulfilled(dummyMsgTab, dummyActionContext)).thenReturn(true);
action.process(dummyMsgTab, dummyActionContext);
Mockito.verify(childAction, Mockito.times(1)).process(dummyMsgTab, dummyActionContext);
Mockito.verify(elseAction, Mockito.times(0)).process(dummyMsgTab, dummyActionContext);
}
public void testProcess_ConditionFulfilled_ApplyNotOperator() throws ISOException {
action.setElseAction(elseAction);
Mockito.when(customCondition.isConditionFulfilled(dummyMsgTab, dummyActionContext)).thenReturn(true);
action.setApplyNotOperator(true);
action.process(dummyMsgTab, dummyActionContext);
Mockito.verify(childAction, Mockito.times(0)).process(dummyMsgTab, dummyActionContext);
Mockito.verify(elseAction, Mockito.times(1)).process(dummyMsgTab, dummyActionContext);
}
public void testProcess_ConditionNotFulfilled() throws ISOException {
action.setElseAction(elseAction);
Mockito.when(customCondition.isConditionFulfilled(dummyMsgTab, dummyActionContext)).thenReturn(false);
action.process(dummyMsgTab, dummyActionContext);
Mockito.verify(childAction, Mockito.times(0)).process(dummyMsgTab, dummyActionContext);
Mockito.verify(elseAction, Mockito.times(1)).process(dummyMsgTab, dummyActionContext);
}
public void testProcess_ConditionNotFulfilled_NoElseActionDefined() throws ISOException {
Mockito.when(customCondition.isConditionFulfilled(dummyMsgTab, dummyActionContext)).thenReturn(false);
action.process(dummyMsgTab, dummyActionContext);
Mockito.verify(childAction, Mockito.times(0)).process(dummyMsgTab, dummyActionContext);
Mockito.verify(elseAction, Mockito.times(0)).process(dummyMsgTab, dummyActionContext);
}
}