package com.softwaremill.common.util.validation;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Adam Warski (adam at warski dot org)
*/
public class NotJustWhitespaceTest {
private final Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
public static class WithNotJustWhitespaceField {
@NotJustWhitespace
private final String data;
public WithNotJustWhitespaceField(String data) {
this.data = data;
}
}
@Test(dataProvider="NotJustWhitespacePassData")
public void testNotJustWhitespacePass(String text) {
// Given
WithNotJustWhitespaceField container = new WithNotJustWhitespaceField(text);
// When
Set<ConstraintViolation<WithNotJustWhitespaceField>> result = validator.validate(container);
// Then
assertThat(result).isEmpty();
}
@DataProvider(name = "NotJustWhitespacePassData")
public Object[][] getNotJustWhitespacePassData() {
return new Object[][] {
new Object[] { "a" },
new Object[] { " - " },
new Object[] { "a\n" },
new Object[] { " Multi line\ntext with\ttabs and other stuff like\tą, *, ; and @" },
};
}
@Test(dataProvider="NotJustWhitespaceFailData")
public void testNotJustWhitespaceFail(String text) {
// Given
final WithNotJustWhitespaceField container = new WithNotJustWhitespaceField(text);
// When
Set<ConstraintViolation<WithNotJustWhitespaceField>> result = validator.validate(container);
// Then
assertThat(result).isNotEmpty();
}
@DataProvider(name = "NotJustWhitespaceFailData")
public Object[][] getNotJustWhitespaceFailData() {
return new Object[][] {
new Object[] { "" },
new Object[] { " " },
new Object[] { "\t" },
new Object[] { "\n" },
};
}
}