Skip to content

Commit 79419b8

Browse files
committed
Simplify tests
Update tests to just declare unexpected exceptions in throws clause (don't need to catch them as they will fail the test automatically if thrown). Update to remove unnecessary type arguments.
1 parent e32891d commit 79419b8

File tree

2 files changed

+81
-127
lines changed

2 files changed

+81
-127
lines changed

src/test/java/build/buf/protovalidate/ValidationResultTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class ValidationResultTest {
2525
@Test
2626
void testToStringNoViolations() {
2727

28-
List<Violation> violations = new ArrayList<Violation>();
28+
List<Violation> violations = new ArrayList<>();
2929
ValidationResult result = new ValidationResult(violations);
3030

3131
assertThat(result.toString()).isEqualTo("Validation OK");
@@ -43,7 +43,7 @@ void testToStringSingleViolation() {
4343
.setMessage("value must equal 42")
4444
.addFirstFieldPathElement(elem)
4545
.build();
46-
List<Violation> violations = new ArrayList<Violation>();
46+
List<Violation> violations = new ArrayList<>();
4747
violations.add(violation);
4848
ValidationResult result = new ValidationResult(violations);
4949

@@ -69,7 +69,7 @@ void testToStringMultipleViolations() {
6969
.setMessage("value is required")
7070
.addFirstFieldPathElement(elem)
7171
.build();
72-
List<Violation> violations = new ArrayList<Violation>();
72+
List<Violation> violations = new ArrayList<>();
7373
violations.add(violation1);
7474
violations.add(violation2);
7575
ValidationResult result = new ValidationResult(violations);
@@ -86,7 +86,7 @@ void testToStringSingleViolationMultipleFieldPathElements() {
8686
FieldPathElement elem2 =
8787
FieldPathElement.newBuilder().setFieldNumber(5).setFieldName("nested_name").build();
8888

89-
List<FieldPathElement> elems = new ArrayList<FieldPathElement>();
89+
List<FieldPathElement> elems = new ArrayList<>();
9090
elems.add(elem1);
9191
elems.add(elem2);
9292

@@ -97,7 +97,7 @@ void testToStringSingleViolationMultipleFieldPathElements() {
9797
.addAllFieldPathElements(elems)
9898
.build();
9999

100-
List<Violation> violations = new ArrayList<Violation>();
100+
List<Violation> violations = new ArrayList<>();
101101
violations.add(violation1);
102102
ValidationResult result = new ValidationResult(violations);
103103

@@ -113,7 +113,7 @@ void testToStringSingleViolationNoFieldPathElements() {
113113
.setRuleId("int32.const")
114114
.setMessage("value must equal 42")
115115
.build();
116-
List<Violation> violations = new ArrayList<Violation>();
116+
List<Violation> violations = new ArrayList<>();
117117
violations.add(violation);
118118
ValidationResult result = new ValidationResult(violations);
119119

src/test/java/build/buf/protovalidate/ValidatorConstructionTest.java

Lines changed: 75 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import static org.assertj.core.api.Assertions.assertThat;
1818
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
19-
import static org.assertj.core.api.Assertions.fail;
2019

2120
import build.buf.protovalidate.exceptions.ValidationException;
2221
import com.example.imports.validationtest.ExampleFieldRules;
@@ -33,52 +32,44 @@ public class ValidatorConstructionTest {
3332

3433
// Tests validation works as planned with default builder.
3534
@Test
36-
public void testDefaultBuilder() {
37-
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
35+
public void testDefaultBuilder() throws ValidationException {
36+
Map<Integer, Integer> testMap = new HashMap<>();
3837
testMap.put(42, 42);
3938
FieldExpressionMapInt32 msg = FieldExpressionMapInt32.newBuilder().putAllVal(testMap).build();
4039

4140
Validator validator = ValidatorFactory.newBuilder().build();
42-
try {
43-
ValidationResult result = validator.validate(msg);
44-
assertThat(result.isSuccess()).isFalse();
45-
assertThat(result.getViolations().size()).isEqualTo(1);
46-
assertThat(result.getViolations().get(0).toProto().getMessage())
47-
.isEqualTo("all map values must equal 1");
48-
} catch (ValidationException e) {
49-
fail("unexpected exception thrown", e);
50-
}
41+
ValidationResult result = validator.validate(msg);
42+
assertThat(result.isSuccess()).isFalse();
43+
assertThat(result.getViolations().size()).isEqualTo(1);
44+
assertThat(result.getViolations().get(0).toProto().getMessage())
45+
.isEqualTo("all map values must equal 1");
5146
}
5247

5348
// Tests validation works as planned with default builder and config
5449
@Test
55-
public void testDefaultBuilderWithConfig() {
56-
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
50+
public void testDefaultBuilderWithConfig() throws ValidationException {
51+
Map<Integer, Integer> testMap = new HashMap<>();
5752
testMap.put(42, 42);
5853
FieldExpressionMapInt32 msg = FieldExpressionMapInt32.newBuilder().putAllVal(testMap).build();
5954

6055
Config cfg = Config.newBuilder().setFailFast(true).build();
6156
Validator validator = ValidatorFactory.newBuilder().withConfig(cfg).build();
62-
try {
63-
ValidationResult result = validator.validate(msg);
64-
assertThat(result.isSuccess()).isFalse();
65-
assertThat(result.getViolations().size()).isEqualTo(1);
66-
assertThat(result.getViolations().get(0).toProto().getMessage())
67-
.isEqualTo("all map values must equal 1");
68-
} catch (ValidationException e) {
69-
fail("unexpected exception thrown", e);
70-
}
57+
ValidationResult result = validator.validate(msg);
58+
assertThat(result.isSuccess()).isFalse();
59+
assertThat(result.getViolations().size()).isEqualTo(1);
60+
assertThat(result.getViolations().get(0).toProto().getMessage())
61+
.isEqualTo("all map values must equal 1");
7162
}
7263

7364
// Tests that if the correct seed descriptors are provided and lazy is disabled,
7465
// validation works as planned.
7566
@Test
76-
public void testSeedDescriptorsLazyDisabled() {
77-
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
67+
public void testSeedDescriptorsLazyDisabled() throws ValidationException {
68+
Map<Integer, Integer> testMap = new HashMap<>();
7869
testMap.put(42, 42);
7970
FieldExpressionMapInt32 msg = FieldExpressionMapInt32.newBuilder().putAllVal(testMap).build();
8071

81-
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
72+
List<Descriptor> seedDescriptors = new ArrayList<>();
8273
FieldExpressionMapInt32 reg = FieldExpressionMapInt32.newBuilder().build();
8374
seedDescriptors.add(reg.getDescriptorForType());
8475

@@ -87,179 +78,142 @@ public void testSeedDescriptorsLazyDisabled() {
8778
// Note that buildWithDescriptors throws the exception so the validator builder
8879
// can be created ahead of time without having to catch an exception.
8980
ValidatorFactory.ValidatorBuilder bldr = ValidatorFactory.newBuilder().withConfig(cfg);
90-
try {
91-
Validator validator = bldr.buildWithDescriptors(seedDescriptors, true);
92-
ValidationResult result = validator.validate(msg);
93-
assertThat(result.isSuccess()).isFalse();
94-
assertThat(result.getViolations().size()).isEqualTo(1);
95-
assertThat(result.getViolations().get(0).toProto().getMessage())
96-
.isEqualTo("all map values must equal 1");
97-
} catch (ValidationException e) {
98-
fail("unexpected exception thrown", e);
99-
}
81+
Validator validator = bldr.buildWithDescriptors(seedDescriptors, true);
82+
ValidationResult result = validator.validate(msg);
83+
assertThat(result.isSuccess()).isFalse();
84+
assertThat(result.getViolations().size()).isEqualTo(1);
85+
assertThat(result.getViolations().get(0).toProto().getMessage())
86+
.isEqualTo("all map values must equal 1");
10087
}
10188

10289
// Tests that the seed descriptor list is immutable inside the validator and that if
10390
// a descriptor is removed after the validator is created, validation still works as planned.
10491
@Test
105-
public void testSeedDescriptorsImmutable() {
106-
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
92+
public void testSeedDescriptorsImmutable() throws ValidationException {
93+
Map<Integer, Integer> testMap = new HashMap<>();
10794
testMap.put(42, 42);
10895
FieldExpressionMapInt32 msg = FieldExpressionMapInt32.newBuilder().putAllVal(testMap).build();
10996

110-
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
97+
List<Descriptor> seedDescriptors = new ArrayList<>();
11198
seedDescriptors.add(msg.getDescriptorForType());
11299

113100
Config cfg = Config.newBuilder().setFailFast(true).build();
114-
try {
115-
Validator validator =
116-
ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, true);
101+
Validator validator =
102+
ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, true);
117103

118-
// Remove descriptor from list after the validator is created to verify validation still works
119-
seedDescriptors.clear();
104+
// Remove descriptor from list after the validator is created to verify validation still works
105+
seedDescriptors.clear();
120106

121-
ValidationResult result = validator.validate(msg);
122-
assertThat(result.isSuccess()).isFalse();
123-
assertThat(result.getViolations().size()).isEqualTo(1);
124-
assertThat(result.getViolations().get(0).toProto().getMessage())
125-
.isEqualTo("all map values must equal 1");
126-
} catch (ValidationException e) {
127-
fail("unexpected exception thrown", e);
128-
}
107+
ValidationResult result = validator.validate(msg);
108+
assertThat(result.isSuccess()).isFalse();
109+
assertThat(result.getViolations().size()).isEqualTo(1);
110+
assertThat(result.getViolations().get(0).toProto().getMessage())
111+
.isEqualTo("all map values must equal 1");
129112
}
130113

131114
// Tests that if a message is attempted to be validated and it wasn't in the initial
132115
// list of seed descriptors AND lazy is disabled, that a message is returned that
133116
// no evaluator is available.
134117
@Test
135-
public void testSeedDescriptorsWithWrongDescriptorAndLazyDisabled() {
136-
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
118+
public void testSeedDescriptorsWithWrongDescriptorAndLazyDisabled() throws ValidationException {
119+
Map<Integer, Integer> testMap = new HashMap<>();
137120
testMap.put(42, 42);
138121
FieldExpressionMapInt32 msg = FieldExpressionMapInt32.newBuilder().putAllVal(testMap).build();
139122

140-
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
123+
List<Descriptor> seedDescriptors = new ArrayList<>();
141124
ExampleFieldRules wrong = ExampleFieldRules.newBuilder().build();
142125
seedDescriptors.add(wrong.getDescriptorForType());
143126

144127
Config cfg = Config.newBuilder().setFailFast(true).build();
145-
try {
146-
Validator validator =
147-
ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, true);
148-
ValidationResult result = validator.validate(msg);
149-
assertThat(result.isSuccess()).isFalse();
150-
assertThat(result.getViolations().size()).isEqualTo(1);
151-
assertThat(result.getViolations().get(0).toProto().getMessage())
152-
.isEqualTo("No evaluator available for " + msg.getDescriptorForType().getFullName());
153-
} catch (ValidationException e) {
154-
fail("unexpected exception thrown", e);
155-
}
128+
Validator validator =
129+
ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, true);
130+
ValidationResult result = validator.validate(msg);
131+
assertThat(result.isSuccess()).isFalse();
132+
assertThat(result.getViolations().size()).isEqualTo(1);
133+
assertThat(result.getViolations().get(0).toProto().getMessage())
134+
.isEqualTo("No evaluator available for " + msg.getDescriptorForType().getFullName());
156135
}
157136

158137
// Tests that an IllegalStateException is thrown if an empty descriptor list is given
159138
// and lazy is disabled.
160139
@Test
161140
public void testEmptySeedDescriptorsInvalidState() {
162-
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
141+
List<Descriptor> seedDescriptors = new ArrayList<>();
163142
assertThatExceptionOfType(IllegalStateException.class)
164143
.isThrownBy(
165-
() -> {
166-
ValidatorFactory.newBuilder().buildWithDescriptors(seedDescriptors, true);
167-
});
144+
() -> ValidatorFactory.newBuilder().buildWithDescriptors(seedDescriptors, true));
168145
}
169146

170147
// Tests that an IllegalStateException is thrown if a null descriptor list is given
171148
// and lazy is disabled.
172149
@Test
173150
public void testNullSeedDescriptorsInvalidState() {
174151
assertThatExceptionOfType(IllegalStateException.class)
175-
.isThrownBy(
176-
() -> {
177-
ValidatorFactory.newBuilder().buildWithDescriptors(null, true);
178-
});
152+
.isThrownBy(() -> ValidatorFactory.newBuilder().buildWithDescriptors(null, true));
179153
}
180154

181155
// Tests that when an empty list of seed descriptors is provided and lazy is enabled
182156
// that the missing message descriptor is successfully built and validation works as planned.
183157
@Test
184-
public void testEmptySeedDescriptorsLazyEnabled() {
185-
Map<Integer, Integer> testMap = new HashMap<Integer, Integer>();
158+
public void testEmptySeedDescriptorsLazyEnabled() throws ValidationException {
159+
Map<Integer, Integer> testMap = new HashMap<>();
186160
testMap.put(42, 42);
187161
FieldExpressionMapInt32 msg = FieldExpressionMapInt32.newBuilder().putAllVal(testMap).build();
188162

189-
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
163+
List<Descriptor> seedDescriptors = new ArrayList<>();
190164
Config cfg = Config.newBuilder().setFailFast(true).build();
191-
try {
192-
Validator validator =
193-
ValidatorFactory.newBuilder()
194-
.withConfig(cfg)
195-
.buildWithDescriptors(seedDescriptors, false);
196-
ValidationResult result = validator.validate(msg);
197-
assertThat(result.isSuccess()).isFalse();
198-
assertThat(result.getViolations().size()).isEqualTo(1);
199-
assertThat(result.getViolations().get(0).toProto().getMessage())
200-
.isEqualTo("all map values must equal 1");
201-
} catch (ValidationException e) {
202-
fail("unexpected exception thrown", e);
203-
}
165+
Validator validator =
166+
ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, false);
167+
ValidationResult result = validator.validate(msg);
168+
assertThat(result.isSuccess()).isFalse();
169+
assertThat(result.getViolations().size()).isEqualTo(1);
170+
assertThat(result.getViolations().get(0).toProto().getMessage())
171+
.isEqualTo("all map values must equal 1");
204172
}
205173

206174
// Tests that when a null list of seed descriptors is provided, a NullPointerException
207175
// is thrown with a message that descriptors cannot be null.
208176
@Test
209177
public void testNullSeedDescriptorsLazyEnabled() {
210178
assertThatExceptionOfType(NullPointerException.class)
211-
.isThrownBy(
212-
() -> {
213-
ValidatorFactory.newBuilder().buildWithDescriptors(null, false);
214-
})
179+
.isThrownBy(() -> ValidatorFactory.newBuilder().buildWithDescriptors(null, false))
215180
.withMessageContaining("descriptors must not be null");
216-
;
217181
}
218182

219183
// Tests that the config is applied when building a validator.
220184
@Test
221-
public void testConfigApplied() {
185+
public void testConfigApplied() throws ValidationException {
222186
// Value must be at most 5 characters and must be lowercase alpha chars or numbers.
223187
FieldExpressionMultiple msg = FieldExpressionMultiple.newBuilder().setVal("INVALID").build();
224188

225189
// Set fail fast to true, so we exit after the first validation failure.
226190
Config cfg = Config.newBuilder().setFailFast(true).build();
227-
try {
228-
Validator validator = ValidatorFactory.newBuilder().withConfig(cfg).build();
229-
ValidationResult result = validator.validate(msg);
230-
assertThat(result.isSuccess()).isFalse();
231-
assertThat(result.getViolations().size()).isEqualTo(1);
232-
assertThat(result.getViolations().get(0).toProto().getMessage())
233-
.isEqualTo("value length must be at most 5 characters");
234-
} catch (ValidationException e) {
235-
fail("unexpected exception thrown", e);
236-
}
191+
Validator validator = ValidatorFactory.newBuilder().withConfig(cfg).build();
192+
ValidationResult result = validator.validate(msg);
193+
assertThat(result.isSuccess()).isFalse();
194+
assertThat(result.getViolations().size()).isEqualTo(1);
195+
assertThat(result.getViolations().get(0).toProto().getMessage())
196+
.isEqualTo("value length must be at most 5 characters");
237197
}
238198

239199
// Tests that the config is applied when building a validator with seed descriptors.
240200
@Test
241-
public void testConfigAppliedWithSeedDescriptors() {
201+
public void testConfigAppliedWithSeedDescriptors() throws ValidationException {
242202
// Value must be at most 5 characters and must be lowercase alpha chars or numbers.
243203
FieldExpressionMultiple msg = FieldExpressionMultiple.newBuilder().setVal("INVALID").build();
244204

245205
FieldExpressionMultiple desc = FieldExpressionMultiple.newBuilder().build();
246-
List<Descriptor> seedDescriptors = new ArrayList<Descriptor>();
206+
List<Descriptor> seedDescriptors = new ArrayList<>();
247207
seedDescriptors.add(desc.getDescriptorForType());
248208

249209
// Set fail fast to true, so we exit after the first validation failure.
250210
Config cfg = Config.newBuilder().setFailFast(true).build();
251-
try {
252-
Validator validator =
253-
ValidatorFactory.newBuilder()
254-
.withConfig(cfg)
255-
.buildWithDescriptors(seedDescriptors, false);
256-
ValidationResult result = validator.validate(msg);
257-
assertThat(result.isSuccess()).isFalse();
258-
assertThat(result.getViolations().size()).isEqualTo(1);
259-
assertThat(result.getViolations().get(0).toProto().getMessage())
260-
.isEqualTo("value length must be at most 5 characters");
261-
} catch (ValidationException e) {
262-
fail("unexpected exception thrown", e);
263-
}
211+
Validator validator =
212+
ValidatorFactory.newBuilder().withConfig(cfg).buildWithDescriptors(seedDescriptors, false);
213+
ValidationResult result = validator.validate(msg);
214+
assertThat(result.isSuccess()).isFalse();
215+
assertThat(result.getViolations().size()).isEqualTo(1);
216+
assertThat(result.getViolations().get(0).toProto().getMessage())
217+
.isEqualTo("value length must be at most 5 characters");
264218
}
265219
}

0 commit comments

Comments
 (0)