View Javadoc
1   package civitas.bboard.server.controllers.tests;
2   
3   import java.util.Map;
4   
5   import org.mockito.invocation.InvocationOnMock;
6   import org.mockito.stubbing.Answer;
7   
8   import civitas.common.tests.EnvironmentState;
9   import civitas.common.tests.RandomAwareTestBase;
10  
11  public class EnvDependentAnswer<T> implements Answer<T> {
12  
13  	private final Map<EnvironmentState, AnswerOrThrowable<T>> answer;
14  
15  	public EnvDependentAnswer(final Map<EnvironmentState, AnswerOrThrowable<T>> answer) {
16  		this.answer = answer;
17  	}
18  
19  	@Override
20  	public T answer(final InvocationOnMock invocation) throws Throwable {
21  		AnswerOrThrowable<T> theAnswer = answer.get(RandomAwareTestBase.state);
22  		if (null == theAnswer) {
23  			theAnswer = answer.get(EnvironmentState.NORMAL);
24  		}
25  		if (null != theAnswer.throwable()) {
26  			throw theAnswer.throwable();
27  		}
28  		return theAnswer.answer();
29  	}
30  }