package rocks.inspectit.server.diagnosis.engine.rule;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.mockito.Mockito.when;
import org.mockito.Mock;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import rocks.inspectit.server.diagnosis.engine.rule.ExecutionContext;
import rocks.inspectit.server.diagnosis.engine.rule.RuleDefinition;
import rocks.inspectit.server.diagnosis.engine.rule.RuleInput;
import rocks.inspectit.server.diagnosis.engine.rule.TagInjection;
import rocks.inspectit.server.diagnosis.engine.rule.annotation.TagValue;
import rocks.inspectit.server.diagnosis.engine.rule.exception.RuleExecutionException;
import rocks.inspectit.server.diagnosis.engine.tag.Tags;
import rocks.inspectit.server.diagnosis.engine.testrules.RuleDummy;
import rocks.inspectit.shared.all.testbase.TestBase;
/**
* @author Claudio Waldvogel
*/
@SuppressWarnings("all")
public class TagInjectionTest extends TestBase {
@Mock
RuleInput input;
@Mock
RuleDefinition definition;
@Mock
RuleDummy ruleImpl;
/**
* Tests {@link TagInjection#execute(ExecutionContext)} method.
*/
public static class Execute extends TagInjectionTest {
private ExecutionContext context;
@BeforeMethod
public void init() {
context = new ExecutionContext(definition, ruleImpl, input);
}
@Test
public void shouldInjectValue() throws RuleExecutionException {
// prepare
when(input.getUnraveled()).thenReturn(Tags.tags("T1", null, "InjectedValue"));
// execute
new TagInjection("T1", RuleDummy.tagStringValueField()).execute(context);
// verify
assertThat(ruleImpl.tagStringValueField, is("InjectedValue"));
}
@Test
public void shouldInjectTag() throws RuleExecutionException {
// prepare
when(input.getUnraveled()).thenReturn(Tags.tags("T1", null, "InjectedValue"));
// execute
new TagInjection("T1", RuleDummy.tagAsTagField(), TagValue.InjectionStrategy.BY_TAG).execute(context);
// verify
assertThat(ruleImpl.tagAsTagField, is(Tags.tag("T1", "InjectedValue")));
}
}
}