Skip to content

Commit 0e56afa

Browse files
murdosfmbenhassine
authored andcommitted
Fix incorrect @Size constraints propagation
Issue j-easy#448
1 parent 97b508e commit 0e56afa

File tree

4 files changed

+48
-8
lines changed

4 files changed

+48
-8
lines changed

easy-random-bean-validation/src/main/java/org/jeasy/random/validation/SizeAnnotationHandler.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@ public Randomizer<?> getRandomizer(Field field) {
6262
final int min = sizeAnnotation.min();
6363
final int max = sizeAnnotation.max() == Integer.MAX_VALUE ? 255 : sizeAnnotation.max();
6464
if (easyRandom == null) {
65-
parameters.setCollectionSizeRange(new EasyRandomParameters.Range<>(min, max));
66-
parameters.setStringLengthRange(new EasyRandomParameters.Range<>(min, max));
6765
easyRandom = new EasyRandom(parameters);
6866
}
6967

easy-random-bean-validation/src/test/java/org/jeasy/random/validation/BeanValidationAnnotatedBean.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ class BeanValidationAnnotatedBean {
119119
@Size(min = 2, max = 10)
120120
private List<String> sizedList;
121121

122+
@Size(min = 2, max = 10)
123+
private List<EmbeddedBean> sizedListEmbeddedBean;
124+
122125
@Size(min = 2, max = 10)
123126
private Set<String> sizedSet;
124127

@@ -269,6 +272,10 @@ public String getSizedString() {
269272
return this.sizedString;
270273
}
271274

275+
public List<EmbeddedBean> getSizedListEmbeddedBean() {
276+
return sizedListEmbeddedBean;
277+
}
278+
272279
public String getRegexString() {
273280
return this.regexString;
274281
}
@@ -405,6 +412,10 @@ public void setSizedString(String sizedString) {
405412
this.sizedString = sizedString;
406413
}
407414

415+
public void setSizedListEmbeddedBean(List<EmbeddedBean> sizedListEmbeddedBean) {
416+
this.sizedListEmbeddedBean = sizedListEmbeddedBean;
417+
}
418+
408419
public void setRegexString(String regexString) {
409420
this.regexString = regexString;
410421
}

easy-random-bean-validation/src/test/java/org/jeasy/random/validation/BeanValidationTest.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import javax.validation.constraints.Digits;
4242
import javax.validation.constraints.NotNull;
4343
import javax.validation.constraints.Size;
44-
4544
import java.math.BigDecimal;
4645
import java.time.LocalDateTime;
4746
import java.util.Date;
@@ -59,6 +58,22 @@ void setUp() {
5958
easyRandom = new EasyRandom();
6059
}
6160

61+
@Test
62+
void sizeConstraintShouldNotBePropagatedToEmbeddedBeans() {
63+
64+
EasyRandomParameters parameters = new EasyRandomParameters()
65+
.collectionSizeRange(11, 15)
66+
.stringLengthRange(16, 20);
67+
easyRandom = new EasyRandom(parameters);
68+
BeanValidationAnnotatedBean bean = easyRandom.nextObject(BeanValidationAnnotatedBean.class);
69+
70+
assertThat(bean.getSizedListEmbeddedBean().size()).isBetween(2, 10); // @Size constraint
71+
assertThat(bean.getSizedListEmbeddedBean()).allSatisfy(embeddedBean -> {
72+
assertThat(embeddedBean.getItems().size()).isBetween(11, 15);
73+
assertThat(embeddedBean.getItems()).allSatisfy(stringItem -> assertThat(stringItem.length()).isBetween(16, 20));
74+
});
75+
}
76+
6277
@Test
6378
void generatedValuesShouldBeValidAccordingToValidationConstraints() {
6479
BeanValidationAnnotatedBean bean = easyRandom.nextObject(BeanValidationAnnotatedBean.class);
@@ -202,15 +217,15 @@ void generatedValuesShouldBeValidAccordingToValidationConstraintsOnMethod() {
202217
@Test
203218
void generatedValuesForBeanWithoutReadMethod() {
204219
BeanValidationWithoutReadMethodBean bean = easyRandom.nextObject(BeanValidationWithoutReadMethodBean.class);
205-
220+
206221
assertThat(bean).hasNoNullFieldsOrProperties();
207222
}
208223

209224
@Test
210225
void shouldGenerateTheSameValueForTheSameSeed() {
211226
EasyRandomParameters parameters = new EasyRandomParameters().seed(123L);
212227
EasyRandom random = new EasyRandom(parameters);
213-
228+
214229
BeanValidationAnnotatedBean bean = random.nextObject(BeanValidationAnnotatedBean.class);
215230

216231
assertThat(bean.getUsername()).isEqualTo("eOMtThyhVNLWUZNRcBaQKxI");
@@ -252,14 +267,14 @@ class Salary {
252267
@Digits(integer = 2, fraction = 2) // OSS developer salary.. :-)
253268
private BigDecimal amount;
254269
}
255-
270+
256271
EasyRandomParameters parameters = new EasyRandomParameters()
257272
.randomizerRegistry(new MyCustomBeanValidationRandomizerRegistry());
258273
EasyRandom easyRandom = new EasyRandom(parameters);
259-
274+
260275
// when
261276
Salary salary = easyRandom.nextObject(Salary.class);
262-
277+
263278
// then
264279
assertThat(salary).isNotNull();
265280
assertThat(salary.amount).isLessThanOrEqualTo(new BigDecimal("99.99"));
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package org.jeasy.random.validation;
2+
3+
import java.util.List;
4+
5+
public class EmbeddedBean {
6+
7+
private List<String> items;
8+
9+
public List<String> getItems() {
10+
return items;
11+
}
12+
13+
public void setItems(List<String> items) {
14+
this.items = items;
15+
}
16+
}

0 commit comments

Comments
 (0)