Skip to content

Commit 98068d3

Browse files
feat(json): JUnit migration follow up (#10768)
feat(json): JUnit migration follow up Co-authored-by: bruce.bujon <bruce.bujon@datadoghq.com>
1 parent 0ae82bc commit 98068d3

File tree

2 files changed

+39
-38
lines changed

2 files changed

+39
-38
lines changed

.claude/skills/migrate-groovy-to-java/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ Migrate test Groovy files to Java using JUnit 5
1414
When converting Groovy code to Java code, make sure that:
1515
- The Java code generated is compatible with JDK 8
1616
- When translating Spock tests, favor using `@CsvSource` with `|` delimiters
17-
- When using `@MethodSource`, name the arguments method by appending `Arguments` using camelCase to the test method name (e.g. `testMethodArguments`)
18-
- Ensure parameterized test names are human-readable (i.e. no hashcodes); instead add a description string as the first `Arguments.of(...)` value or index the test case
17+
- When using `@MethodSource`, name the arguments method by appending `Arguments` using camelCase to the test method name (e.g. `testMethodArguments`) and return a `Stream` of arguments using `Stream.of(...)` and `arguments(...)` with static import.
18+
- Ensure parameterized test names are human-readable (i.e. no hashcodes); instead add a description string as the first `Arguments.arguments(...)` value or index the test case
1919
- When converting tuples, create a light dedicated structure instead to keep the typing system
2020
- Instead of checking a state and throwing an exception, use JUnit asserts
2121
- Do not wrap checked exceptions and throw a Runtime exception; prefer adding a throws clause at method declaration

components/json/src/test/java/datadog/json/JsonMapperTest.java

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44
import static java.util.Collections.emptyMap;
55
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
66
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
78
import static org.junit.jupiter.api.Assertions.assertThrows;
89
import static org.junit.jupiter.api.Assertions.assertTrue;
10+
import static org.junit.jupiter.params.provider.Arguments.arguments;
911

1012
import java.io.IOException;
1113
import java.util.ArrayList;
@@ -24,7 +26,8 @@ class JsonMapperTest {
2426

2527
@ParameterizedTest(name = "test mapping to JSON object: {0}")
2628
@MethodSource("testMappingToJsonObjectArguments")
27-
void testMappingToJsonObject(String testCase, Map<String, Object> input, String expected)
29+
void testMappingToJsonObject(
30+
@SuppressWarnings("unused") String testCase, Map<String, Object> input, String expected)
2831
throws IOException {
2932
String json = JsonMapper.toJson(input);
3033
assertEquals(expected, json);
@@ -42,7 +45,7 @@ void testMappingToJsonObject(String testCase, Map<String, Object> input, String
4245
if (expectedValue instanceof UnsupportedType) {
4346
assertEquals(expectedValue.toString(), parsedValue);
4447
} else if (expectedValue instanceof Float) {
45-
assertTrue(parsedValue instanceof Double);
48+
assertInstanceOf(Double.class, parsedValue);
4649
assertEquals((Float) expectedValue, (Double) parsedValue, 0.001);
4750
} else {
4851
assertEquals(expectedValue, parsedValue);
@@ -74,15 +77,15 @@ static Stream<Arguments> testMappingToJsonObjectArguments() {
7477
complexMap.put("key8", new UnsupportedType());
7578

7679
return Stream.of(
77-
Arguments.of("null input", null, "{}"),
78-
Arguments.of("empty map", new HashMap<>(), "{}"),
79-
Arguments.of("single entry", singleEntry, "{\"key1\":\"value1\"}"),
80-
Arguments.of("two entries", twoEntries, "{\"key1\":\"value1\",\"key2\":\"value2\"}"),
81-
Arguments.of(
80+
arguments("null input", null, "{}"),
81+
arguments("empty map", new HashMap<>(), "{}"),
82+
arguments("single entry", singleEntry, "{\"key1\":\"value1\"}"),
83+
arguments("two entries", twoEntries, "{\"key1\":\"value1\",\"key2\":\"value2\"}"),
84+
arguments(
8285
"quoted entries",
8386
quotedEntries,
8487
"{\"key1\":\"va\\\"lu\\\"e1\",\"ke\\\"y2\":\"value2\"}"),
85-
Arguments.of(
88+
arguments(
8689
"complex map",
8790
complexMap,
8891
"{\"key1\":null,\"key2\":\"bar\",\"key3\":3,\"key4\":3456789123,\"key5\":3.142,\"key6\":3.141592653589793,\"key7\":true,\"key8\":\"toString\"}"));
@@ -96,8 +99,7 @@ void testMappingToMapFromEmptyJsonObject(String json) throws IOException {
9699
}
97100

98101
static Stream<Arguments> testMappingToMapFromEmptyJsonObjectArguments() {
99-
return Stream.of(
100-
Arguments.of((Object) null), Arguments.of("null"), Arguments.of(""), Arguments.of("{}"));
102+
return Stream.of(arguments((Object) null), arguments("null"), arguments(""), arguments("{}"));
101103
}
102104

103105
@ParameterizedTest(name = "test mapping to Map from non-object JSON: {0}")
@@ -118,11 +120,11 @@ void testMappingIterableToJsonArray(List<String> input, String expected) throws
118120

119121
static Stream<Arguments> testMappingIterableToJsonArrayArguments() {
120122
return Stream.of(
121-
Arguments.of(null, "[]"),
122-
Arguments.of(new ArrayList<>(), "[]"),
123-
Arguments.of(Arrays.asList("value1"), "[\"value1\"]"),
124-
Arguments.of(Arrays.asList("value1", "value2"), "[\"value1\",\"value2\"]"),
125-
Arguments.of(Arrays.asList("va\"lu\"e1", "value2"), "[\"va\\\"lu\\\"e1\",\"value2\"]"));
123+
arguments(null, "[]"),
124+
arguments(new ArrayList<>(), "[]"),
125+
arguments(Arrays.asList("value1"), "[\"value1\"]"),
126+
arguments(Arrays.asList("value1", "value2"), "[\"value1\",\"value2\"]"),
127+
arguments(Arrays.asList("va\"lu\"e1", "value2"), "[\"va\\\"lu\\\"e1\",\"value2\"]"));
126128
}
127129

128130
@ParameterizedTest(name = "test mapping array to JSON array: {0}")
@@ -138,11 +140,11 @@ void testMappingArrayToJsonArray(String testCase, String[] input, String expecte
138140

139141
static Stream<Arguments> testMappingArrayToJsonArrayArguments() {
140142
return Stream.of(
141-
Arguments.of("null input", (Object) null, "[]"),
142-
Arguments.of("empty array", new String[] {}, "[]"),
143-
Arguments.of("single element", new String[] {"value1"}, "[\"value1\"]"),
144-
Arguments.of("two elements", new String[] {"value1", "value2"}, "[\"value1\",\"value2\"]"),
145-
Arguments.of(
143+
arguments("null input", (Object) null, "[]"),
144+
arguments("empty array", new String[] {}, "[]"),
145+
arguments("single element", new String[] {"value1"}, "[\"value1\"]"),
146+
arguments("two elements", new String[] {"value1", "value2"}, "[\"value1\",\"value2\"]"),
147+
arguments(
146148
"escaped quotes",
147149
new String[] {"va\"lu\"e1", "value2"},
148150
"[\"va\\\"lu\\\"e1\",\"value2\"]"));
@@ -156,8 +158,7 @@ void testMappingToListFromEmptyJsonObject(String json) throws IOException {
156158
}
157159

158160
static Stream<Arguments> testMappingToListFromEmptyJsonObjectArguments() {
159-
return Stream.of(
160-
Arguments.of((Object) null), Arguments.of("null"), Arguments.of(""), Arguments.of("[]"));
161+
return Stream.of(arguments((Object) null), arguments("null"), arguments(""), arguments("[]"));
161162
}
162163

163164
@ParameterizedTest(name = "test mapping to JSON string: {0}")
@@ -169,20 +170,20 @@ void testMappingToJsonString(String input, String expected) {
169170

170171
static Stream<Arguments> testMappingToJsonStringArguments() {
171172
return Stream.of(
172-
Arguments.of((Object) null, ""),
173-
Arguments.of("", ""),
174-
Arguments.of(String.valueOf((char) 4096), "\"\\u1000\""),
175-
Arguments.of(String.valueOf((char) 256), "\"\\u0100\""),
176-
Arguments.of(String.valueOf((char) 128), "\"\\u0080\""),
177-
Arguments.of("\b", "\"\\b\""),
178-
Arguments.of("\t", "\"\\t\""),
179-
Arguments.of("\n", "\"\\n\""),
180-
Arguments.of("\f", "\"\\f\""),
181-
Arguments.of("\r", "\"\\r\""),
182-
Arguments.of("\"", "\"\\\"\""),
183-
Arguments.of("/", "\"\\/\""),
184-
Arguments.of("\\", "\"\\\\\""),
185-
Arguments.of("a", "\"a\""));
173+
arguments((Object) null, ""),
174+
arguments("", ""),
175+
arguments(String.valueOf((char) 4096), "\"\\u1000\""),
176+
arguments(String.valueOf((char) 256), "\"\\u0100\""),
177+
arguments(String.valueOf((char) 128), "\"\\u0080\""),
178+
arguments("\b", "\"\\b\""),
179+
arguments("\t", "\"\\t\""),
180+
arguments("\n", "\"\\n\""),
181+
arguments("\f", "\"\\f\""),
182+
arguments("\r", "\"\\r\""),
183+
arguments("\"", "\"\\\"\""),
184+
arguments("/", "\"\\/\""),
185+
arguments("\\", "\"\\\\\""),
186+
arguments("a", "\"a\""));
186187
}
187188

188189
private static class UnsupportedType {

0 commit comments

Comments
 (0)