package rocks.inspectit.server.diagnosis.engine.rule;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.nullValue;
import static org.mockito.Mockito.when;
import java.util.Map;
import org.mockito.Mock;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import rocks.inspectit.server.diagnosis.engine.rule.exception.RuleExecutionException;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleDummy;
import rocks.inspectit.shared.all.testbase.TestBase;
/**
* Tests the {@link ConditionMethod} class.
*
* @author Alexander Wert
*
*/
public class ConditionMethodTest extends TestBase {
@Mock
RuleInput input;
@Mock
RuleDefinition definition;
@Mock
Map<String, Object> variables;
@Mock(name = "instance")
RuleDummy dummy;
/**
* Tests the {@link ConditionMethod#execute(ExecutionContext)} method.
*
* @author Alexander Wert
*
*/
public class Execute extends ConditionMethodTest {
private ExecutionContext context;
@BeforeMethod
public void init() {
context = new ExecutionContext(definition, dummy, input, variables);
}
@Test
public void shouldProduceNull() throws Exception {
// prepare Mocks
when(dummy.successCondiction()).thenReturn(true);
ConditionMethod condition = new ConditionMethod("TestSuccessCondition", "success", RuleDummy.successConditionMethod());
ConditionFailure failure = condition.execute(context);
assertThat(failure, nullValue());
}
@Test
public void shouldProduceConditionFailure() throws Exception {
// prepare Mocks
when(dummy.successCondiction()).thenReturn(true);
ConditionMethod condition = new ConditionMethod("TestFailCondition", "failure", RuleDummy.failConditionMethod());
ConditionFailure failure = condition.execute(context);
assertThat(failure.getConditionName(), equalTo(condition.getName()));
assertThat(failure.getHint(), equalTo(condition.getHint()));
}
@Test(expectedExceptions = { RuleExecutionException.class })
public void shouldthrowException() throws Exception {
// prepare Mocks
when(dummy.invalidCondition()).thenThrow(new RuntimeException());
ConditionMethod condition = new ConditionMethod("TestInvalidCondition", "invalid", RuleDummy.invalidConditionMethod());
ConditionFailure failure = condition.execute(context);
System.out.println(failure);
}
}
}