Search in sources :

Example 1 with OneOf

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)"));
    }
}
Also used : OneOf(org.apache.ignite.configuration.validation.OneOf) ValidationIssue(org.apache.ignite.configuration.validation.ValidationIssue) ValueSource(org.junit.jupiter.params.provider.ValueSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

OneOf (org.apache.ignite.configuration.validation.OneOf)1 ValidationIssue (org.apache.ignite.configuration.validation.ValidationIssue)1 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)1 ValueSource (org.junit.jupiter.params.provider.ValueSource)1