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
22 AnswerOrThrowable<T> theAnswer = answer.get(RandomAwareTestBase.state);
23 if (null == theAnswer) {
24 theAnswer = answer.get(EnvironmentState.NORMAL);
25 }
26 if (null != theAnswer.throwable()) {
27 throw theAnswer.throwable();
28 }
29 return theAnswer.answer();
30 }
31 }