use of org.apache.ignite.configuration.validation.OneOf in project ignite-3 by apache.
the class OneOfValidatorTest method testValidate.
/**
* Test.
*/
@ParameterizedTest
@ValueSource(booleans = { false, true })
public void testValidate(boolean caseSensitive) {
// Prepare mocked annotation instance.
OneOf oneOfAnnotation = mock(OneOf.class);
when(oneOfAnnotation.value()).thenReturn(new String[] { "foo", "bar" });
when(oneOfAnnotation.caseSensitive()).thenReturn(caseSensitive);
// Prepare mocked validation context.
ValidationContext<String> ctx = mock(ValidationContext.class);
when(ctx.currentKey()).thenReturn("x");
when(ctx.getNewValue()).thenReturn("foo", "Bar", "no");
// Prepare issues captor.
ArgumentCaptor<ValidationIssue> issuesCaptor = ArgumentCaptor.forClass(ValidationIssue.class);
doNothing().when(ctx).addIssue(issuesCaptor.capture());
// Instantiate validator.
OneOfValidator oneOfValidator = new OneOfValidator();
// Assert that valid value produces no issues.
oneOfValidator.validate(oneOfAnnotation, ctx);
assertThat(issuesCaptor.getAllValues(), is(empty()));
// Assert that case sencitivity affects validation.
oneOfValidator.validate(oneOfAnnotation, ctx);
if (caseSensitive) {
assertThat(issuesCaptor.getValue().message(), is("'x' configuration value must be one of [foo, bar] (case sensitive)"));
} else {
assertThat(issuesCaptor.getAllValues(), is(empty()));
}
// Assert that unacceptable value produces validation issue.
oneOfValidator.validate(oneOfAnnotation, ctx);
if (caseSensitive) {
assertThat(issuesCaptor.getValue().message(), is("'x' configuration value must be one of [foo, bar] (case sensitive)"));
} else {
assertThat(issuesCaptor.getValue().message(), is("'x' configuration value must be one of [foo, bar] (case insensitive)"));
}
}
Aggregations