Skip to content

Commit 6a8024a

Browse files
authored
Merge pull request #18 from aboutbits/custom-validations
Custom validations
2 parents 5127312 + c73924b commit 6a8024a

2 files changed

Lines changed: 51 additions & 1 deletion

File tree

src/main/java/it/aboutbits/springboot/testing/testdata/base/FakerExtended.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package it.aboutbits.springboot.testing.testdata.base;
22

3+
import it.aboutbits.springboot.toolbox.type.ScaledBigDecimal;
34
import it.aboutbits.springboot.toolbox.type.identity.EntityId;
45
import lombok.NonNull;
56
import net.datafaker.Faker;
@@ -60,4 +61,52 @@ public <T extends EntityId<String>> T randomEntityId(@NonNull Function<String, T
6061
public String unique(@NonNull String value) {
6162
return value + "_" + super.random().nextInt(9999999);
6263
}
64+
65+
public RandomNumericRange numericRange() {
66+
return new RandomNumericRange(
67+
super.getFaker()
68+
);
69+
}
70+
71+
public static final class RandomNumericRange {
72+
private final Faker parent;
73+
74+
private RandomNumericRange(Faker parent) {
75+
this.parent = parent;
76+
}
77+
78+
public NumericRange random() {
79+
return random(-999999999, 999999999);
80+
}
81+
82+
public NumericRange positive() {
83+
return random(1, 999999999);
84+
}
85+
86+
public NumericRange positiveOrZero() {
87+
return random(0, 999999999);
88+
}
89+
90+
public NumericRange negative() {
91+
return random(-999999999, -1);
92+
}
93+
94+
public NumericRange negativeOrZero() {
95+
return random(-999999999, 0);
96+
}
97+
98+
public NumericRange random(double min, double max) {
99+
var lower = parent.random().nextDouble(min, max - 1);
100+
var upper = parent.random().nextDouble(lower, max);
101+
102+
return new NumericRange(
103+
ScaledBigDecimal.valueOf(lower),
104+
ScaledBigDecimal.valueOf(upper)
105+
);
106+
}
107+
108+
public record NumericRange(ScaledBigDecimal lower, ScaledBigDecimal upper) {
109+
110+
}
111+
}
63112
}

src/main/java/it/aboutbits/springboot/testing/validation/core/RuleValidator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import jakarta.validation.Validation;
66
import jakarta.validation.Validator;
77
import jakarta.validation.ValidatorFactory;
8+
import jakarta.validation.groups.Default;
89
import lombok.NonNull;
910
import lombok.SneakyThrows;
1011
import org.springframework.lang.Nullable;
@@ -127,7 +128,7 @@ private static <P> void assertThatValidationIsCompliantForEachProperty(
127128
} else {
128129

129130
// Use Bean Validation to validate the copy
130-
var violations = validator.validate(copy);
131+
var violations = validator.validate(copy, Default.class);
131132

132133
// Check if there are any violations
133134
var violatingFieldMessages = violations

0 commit comments

Comments
 (0)