Skip to content

Commit 8a2666b

Browse files
author
pith
committed
Refactor and add more tests
1 parent 8fb5c98 commit 8a2666b

18 files changed

+171
-75
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Version 2.2.0 (2016-01-28)
2+
3+
* [new] An ExceptionMapper for ValidationException is provided by default.
4+

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<groupId>org.seedstack.addons.validation</groupId>
2121
<artifactId>validation</artifactId>
22-
<version>2.1.1-SNAPSHOT</version>
22+
<version>2.2.0-SNAPSHOT</version>
2323

2424
<properties>
2525
<seed.version>2.1.0</seed.version>

src/it/java/org/seedstack/validation/internal/ValidationPlugin_ValidationErrorIT.java renamed to src/it/java/org/seedstack/validation/internal/FieldValidationKoIT.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,23 @@
77
*/
88
package org.seedstack.validation.internal;
99

10-
import org.seedstack.validation.ValidationException;
11-
import org.seedstack.validation.internal.pojo.DummyServiceFieldValidation;
1210
import org.junit.Test;
1311
import org.junit.runner.RunWith;
14-
import org.seedstack.seed.it.SeedITRunner;
1512
import org.seedstack.seed.it.Expect;
13+
import org.seedstack.seed.it.SeedITRunner;
14+
import org.seedstack.validation.ValidationException;
15+
import org.seedstack.validation.internal.pojo.FieldValidationKO;
1616

1717
import javax.inject.Inject;
1818

1919
import static org.assertj.core.api.Assertions.assertThat;
2020

2121
@RunWith(SeedITRunner.class)
2222
@Expect(value = ValidationException.class, step = Expect.TestingStep.INSTANTIATION)
23-
public class ValidationPlugin_ValidationErrorIT {
23+
public class FieldValidationKoIT {
2424

2525
@Inject
26-
DummyServiceFieldValidation serviceField;
26+
FieldValidationKO serviceField;
2727

2828
@Test
2929
public void trigger() {

src/it/java/org/seedstack/validation/internal/ValidationPlugin_ValidationOkIT.java renamed to src/it/java/org/seedstack/validation/internal/FieldValidationOkIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*/
88
package org.seedstack.validation.internal;
99

10-
import org.seedstack.validation.internal.pojo.DummyServiceFieldValidationOK;
10+
import org.seedstack.validation.internal.pojo.FieldValidationOK;
1111
import org.assertj.core.api.Assertions;
1212
import org.junit.Test;
1313
import org.junit.runner.RunWith;
@@ -16,10 +16,10 @@
1616
import javax.inject.Inject;
1717

1818
@RunWith(SeedITRunner.class)
19-
public class ValidationPlugin_ValidationOkIT {
19+
public class FieldValidationOkIT {
2020

2121
@Inject
22-
DummyServiceFieldValidationOK serviceField;
22+
FieldValidationOK serviceField;
2323

2424
@Test
2525
public void trigger() {

src/it/java/org/seedstack/validation/internal/ValidationPluginIT.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,16 @@
2020
public class ValidationPluginIT {
2121

2222
@Inject
23-
DummyServiceParamValidation serviceParam;
23+
ParamValidation serviceParam;
2424

2525
@Inject
26-
DummyServiceFieldValidationOK serviceField;
26+
FieldValidationOK serviceField;
2727

2828
@Inject
29-
DummyServiceParamReturnType serviceReturnType;
29+
ParamReturnType serviceReturnType;
3030

3131
@Inject
32-
DummyServiceWithoutValidation serviceWithoutValidation;
32+
WithoutValidation serviceWithoutValidation;
3333

3434
@Test
3535
public void services_are_well_injected() {

src/it/java/org/seedstack/validation/internal/ValidationServiceIT.java

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
*/
88
package org.seedstack.validation.internal;
99

10-
import org.seedstack.validation.ValidationException;
11-
import org.seedstack.validation.ValidationService;
12-
import org.seedstack.validation.internal.pojo.Pojo;
13-
import org.seedstack.validation.internal.pojo.PojoWithDeepValidation;
1410
import org.assertj.core.api.Assertions;
1511
import org.junit.Test;
1612
import org.junit.runner.RunWith;
1713
import org.seedstack.seed.it.SeedITRunner;
14+
import org.seedstack.validation.ValidationException;
15+
import org.seedstack.validation.ValidationService;
16+
import org.seedstack.validation.internal.pojo.Bean;
17+
import org.seedstack.validation.internal.pojo.MyImpl;
18+
import org.seedstack.validation.internal.pojo.Pojo;
19+
import org.seedstack.validation.internal.pojo.PojoWithDeepValidation;
1820

1921
import javax.inject.Inject;
2022
import javax.validation.ConstraintViolation;
@@ -29,35 +31,60 @@ public class ValidationServiceIT {
2931
ValidationService validationService;
3032

3133
@Test
32-
public void validation_service_is_well_injected() {
34+
public void validationServiceIsInjected() {
3335
assertThat(validationService).isNotNull();
3436
}
3537

3638
@Test
37-
public void validation_service_work_nominally() {
39+
public void throwsExceptionOnInvalidPojo() {
3840
try {
3941
validationService.staticallyHandle(new Pojo(Pojo.State.INVALID));
40-
4142
Assertions.failBecauseExceptionWasNotThrown(ValidationException.class);
4243
} catch (ValidationException validationException) {
43-
validationException.printStackTrace();
44-
Set<ConstraintViolation<?>> constraintViolations = validationException.get(ValidationService.JAVAX_VALIDATION_CONSTRAINT_VIOLATIONS);
45-
46-
assertThat(constraintViolations.size()).isEqualTo(3);
44+
expectViolations(validationException, 3);
4745
}
4846
}
4947

48+
private void expectViolations(ValidationException validationException, int expected) {
49+
Set<ConstraintViolation<?>> constraintViolations = validationException
50+
.get(ValidationService.JAVAX_VALIDATION_CONSTRAINT_VIOLATIONS);
51+
assertThat(constraintViolations).hasSize(expected);
52+
}
53+
5054
@Test
51-
public void validation_on_cascade() {
55+
public void doNothingOnValidPojo() {
56+
validationService.staticallyHandle(new Pojo(Pojo.State.VALID));
57+
}
58+
59+
@Test
60+
public void throwsExceptionOnDeepValidation() {
5261
try {
5362
validationService.staticallyHandle(new PojoWithDeepValidation());
63+
Assertions.failBecauseExceptionWasNotThrown(ValidationException.class);
64+
} catch (ValidationException validationException) {
65+
expectViolations(validationException, 4);
66+
}
67+
}
5468

69+
@Test
70+
public void validationShouldWorkOnInterface() {
71+
try {
72+
validationService.staticallyHandle(new MyImpl());
5573
Assertions.failBecauseExceptionWasNotThrown(ValidationException.class);
5674
} catch (ValidationException validationException) {
57-
validationException.printStackTrace();
58-
Set<ConstraintViolation<?>> constraintViolations = validationException.get(ValidationService.JAVAX_VALIDATION_CONSTRAINT_VIOLATIONS);
75+
expectViolations(validationException, 1);
76+
}
77+
}
5978

60-
assertThat(constraintViolations.size()).isEqualTo(4);
79+
@Test
80+
public void validationShouldWorkOnGetter() {
81+
try {
82+
Bean candidate = new Bean();
83+
candidate.setHour(25);
84+
validationService.staticallyHandle(candidate);
85+
Assertions.failBecauseExceptionWasNotThrown(ValidationException.class);
86+
} catch (ValidationException validationException) {
87+
expectViolations(validationException, 1);
6188
}
6289
}
6390
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/**
2+
* Copyright (c) 2013-2015, The SeedStack authors <http://seedstack.org>
3+
*
4+
* This Source Code Form is subject to the terms of the Mozilla Public
5+
* License, v. 2.0. If a copy of the MPL was not distributed with this
6+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
7+
*/
8+
package org.seedstack.validation.internal.pojo;
9+
10+
import javax.validation.constraints.Max;
11+
12+
public class Bean {
13+
14+
private int hour;
15+
16+
@Max(24)
17+
public int getHour() {
18+
return hour;
19+
}
20+
21+
public void setHour(int hour) {
22+
this.hour = hour;
23+
}
24+
}

src/it/java/org/seedstack/validation/internal/pojo/DummyServiceFieldValidation.java renamed to src/it/java/org/seedstack/validation/internal/pojo/FieldValidationKO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
@ITBind
16-
public class DummyServiceFieldValidation {
16+
public class FieldValidationKO {
1717

1818
@NotNull
1919
private Object param;

src/it/java/org/seedstack/validation/internal/pojo/DummyServiceFieldValidationOK.java renamed to src/it/java/org/seedstack/validation/internal/pojo/FieldValidationOK.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212
import javax.validation.constraints.NotNull;
1313

1414

15-
1615
@ITBind
17-
public class DummyServiceFieldValidationOK {
16+
public class FieldValidationOK {
1817

1918
@NotNull
2019
private Object param = new Object();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Copyright (c) 2013-2015, The SeedStack authors <http://seedstack.org>
3+
*
4+
* This Source Code Form is subject to the terms of the Mozilla Public
5+
* License, v. 2.0. If a copy of the MPL was not distributed with this
6+
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
7+
*/
8+
package org.seedstack.validation.internal.pojo;
9+
10+
public class MyImpl implements MyInterface {
11+
12+
private int color;
13+
14+
@Override
15+
public int getColor() {
16+
return color;
17+
}
18+
19+
@Override
20+
public void setColor(int color) {
21+
this.color = color;
22+
}
23+
}

0 commit comments

Comments
 (0)