Skip to content

Add avaje tests for email and pattern #45

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
May 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions blackbox-test/src/test/java/example/avaje/AMyEmail.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package example.avaje;

import io.avaje.validation.ValidPojo;
import io.avaje.validation.constraints.Email;

@ValidPojo
public class AMyEmail {

@Email
public final String email;

public AMyEmail(String email) {
this.email = email;
}
}
51 changes: 51 additions & 0 deletions blackbox-test/src/test/java/example/avaje/AMyEmailTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package example.avaje;

import io.avaje.validation.ConstraintViolation;
import io.avaje.validation.ConstraintViolationException;
import io.avaje.validation.Validator;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Locale;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;

class AMyEmailTest {

final Validator validator = Validator.builder().build();

@Test
void valid() {
var bean = new AMyEmail("[email protected]");
validator.validate(bean);
}

@Test
void email() {
var violation = one(new AMyEmail("abc"));
assertThat(violation.message()).isEqualTo("must be a well-formed email address");
}

@Test
void emailDE() {
var violation = one(new AMyEmail("abc"), Locale.GERMAN);
assertThat(violation.message()).isEqualTo("muss eine korrekt formatierte E-Mail-Adresse sein");
}

ConstraintViolation one(Object any) {
return one(any, Locale.ENGLISH);
}

ConstraintViolation one(Object any, Locale locale) {
try {
validator.validate(any, locale);
fail("not expected");
return null;
} catch (ConstraintViolationException e) {
var violations = new ArrayList<>(e.violations());
assertThat(violations).hasSize(1);
return violations.get(0);
}
}
}
15 changes: 15 additions & 0 deletions blackbox-test/src/test/java/example/avaje/AMyPattern.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package example.avaje;

import io.avaje.validation.ValidPojo;
import io.avaje.validation.constraints.Pattern;

@ValidPojo
public class AMyPattern {

@Pattern(regexp = "[0-3]+")
public final String myPattern;

public AMyPattern(String myPattern) {
this.myPattern = myPattern;
}
}
51 changes: 51 additions & 0 deletions blackbox-test/src/test/java/example/avaje/AMyPatternTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package example.avaje;

import io.avaje.validation.ConstraintViolation;
import io.avaje.validation.ConstraintViolationException;
import io.avaje.validation.Validator;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Locale;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;

class AMyPatternTest {

final Validator validator = Validator.builder().build();

@Test
void valid() {
var bean = new AMyPattern("12");
validator.validate(bean);
}

@Test
void pattern() {
var violation = one(new AMyPattern("abc"));
assertThat(violation.message()).isEqualTo("must match \"[0-3]+\"");
}

@Test
void patternDE() {
var violation = one(new AMyPattern("abc"), Locale.GERMAN);
assertThat(violation.message()).isEqualTo("muss mit \"[0-3]+\" übereinstimmen");
}

ConstraintViolation one(Object any) {
return one(any, Locale.ENGLISH);
}

ConstraintViolation one(Object any, Locale locale) {
try {
validator.validate(any, locale);
fail("not expected");
return null;
} catch (ConstraintViolationException e) {
var violations = new ArrayList<>(e.violations());
assertThat(violations).hasSize(1);
return violations.get(0);
}
}
}
30 changes: 30 additions & 0 deletions blackbox-test/src/test/java/example/avaje/ANums.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package example.avaje;

import io.avaje.validation.ValidPojo;
import io.avaje.validation.constraints.*;

@ValidPojo
public class ANums {

@Digits(integer = 5, fraction = 3)
public String digits = "1234.12";

@Positive
public int positive = 3;

@PositiveOrZero
public int positiveOrZero = 0;

@Negative
public int negative = -3;

@NegativeOrZero
public int negativeOrZero = 0;

@Max(20)
public int max = 0;

@Min(5)
public int min = 6;

}
118 changes: 118 additions & 0 deletions blackbox-test/src/test/java/example/avaje/ANumsTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package example.avaje;

import io.avaje.validation.ConstraintViolation;
import io.avaje.validation.ConstraintViolationException;
import io.avaje.validation.Validator;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.Locale;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.fail;

class ANumsTest {

final Validator validator = Validator.builder().build();

@Test
void valid() {
validator.validate(new ANums());
}

@Test
void digits() {
var bean = new ANums();
bean.digits = "12345678";
var violation = one(bean);
assertThat(violation.message()).isEqualTo("numeric value out of bounds (<5 digits>.<3 digits> expected)");
}

@Test
void digitsDE() {
var bean = new ANums();
bean.digits = "12345678";
var violation = one(bean, Locale.GERMAN);
assertThat(violation.message()).isEqualTo("numerischer Wert außerhalb des gültigen Bereichs (<5 digits>.<3 digits> erwartet)");
}

@Test
void positive() {
var bean = new ANums();
bean.positive = -1;
var violation = one(bean);
assertThat(violation.message()).isEqualTo("must be greater than 0");
}

@Test
void positiveDE() {
var bean = new ANums();
bean.positive = -1;
var violation = one(bean, Locale.GERMAN);
assertThat(violation.message()).isEqualTo("muss größer als 0 sein");
}

@Test
void positiveOrZero() {
var bean = new ANums();
bean.positiveOrZero = -1;
var violation = one(bean);
assertThat(violation.message()).isEqualTo("must be greater than or equal to 0");
}

@Test
void positiveOrZeroDE() {
var bean = new ANums();
bean.positiveOrZero = -1;
var violation = one(bean, Locale.GERMAN);
assertThat(violation.message()).isEqualTo("muss größer-gleich 0 sein");
}

@Test
void negative() {
var bean = new ANums();
bean.negative = 1;
var violation = one(bean);
assertThat(violation.message()).isEqualTo("must be less than 0");
}

@Test
void negativeDE() {
var bean = new ANums();
bean.negative = 1;
var violation = one(bean, Locale.GERMAN);
assertThat(violation.message()).isEqualTo("muss kleiner als 0 sein");
}

@Test
void negativeOrZero() {
var bean = new ANums();
bean.negativeOrZero = 1;
var violation = one(bean);
assertThat(violation.message()).isEqualTo("must be less than or equal to 0");
}

@Test
void negativeOrZeroDE() {
var bean = new ANums();
bean.negativeOrZero = 1;
var violation = one(bean, Locale.GERMAN);
assertThat(violation.message()).isEqualTo("muss kleiner-gleich 0 sein");
}

ConstraintViolation one(Object any) {
return one(any, Locale.ENGLISH);
}

ConstraintViolation one(Object any, Locale locale) {
try {
validator.validate(any, locale);
fail("not expected");
return null;
} catch (ConstraintViolationException e) {
var violations = new ArrayList<>(e.violations());
assertThat(violations).hasSize(1);
return violations.get(0);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

Class<?>[] groups() default {};

int value();
int integer();

int fraction() default 0;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

Class<?>[] groups() default {};

double value();
long value();

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

Class<?>[] groups() default {};

double value();
long value();

@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
Expand Down
Loading