Skip to content

Commit 462a641

Browse files
committed
F!! added support for using jsonapprovals with jackson
1 parent 08f336e commit 462a641

File tree

9 files changed

+101
-7
lines changed

9 files changed

+101
-7
lines changed

approvaltests-tests/pom.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,22 @@
8989
<artifactId>gson</artifactId>
9090
<version>2.9.0</version>
9191
</dependency>
92+
<dependency>
93+
<groupId>com.fasterxml.jackson.core</groupId>
94+
<artifactId>jackson-annotations</artifactId>
95+
<version>2.13.3</version>
96+
</dependency>
97+
<dependency>
98+
<groupId>com.fasterxml.jackson.core</groupId>
99+
<artifactId>jackson-core</artifactId>
100+
<version>2.13.3</version>
101+
</dependency>
102+
<dependency>
103+
<groupId>com.fasterxml.jackson.core</groupId>
104+
<artifactId>jackson-databind</artifactId>
105+
<version>2.13.3</version>
106+
</dependency>
107+
92108
<dependency>
93109
<groupId>commons-httpclient</groupId>
94110
<artifactId>commons-httpclient</artifactId>

approvaltests-tests/src/test/java/org/approvaltests/DocumentHelpersTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ else if (simpleName.equals("JsonApprovals"))
6060
{
6161
modifier = 2;
6262
}
63+
else if (simpleName.equals("JsonJacksonApprovals"))
64+
{
65+
modifier = -2;
66+
}
6367
else if (simpleName.equals("VelocityApprovals"))
6468
{
6569
modifier = 2;

approvaltests-tests/src/test/java/org/approvaltests/DocumentHelpersTest.listAllVerifyFunctions.approved.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,5 @@
5353
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L25-L28) (Object)
5454
* JsonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L29-L32) (Object,Function1)
5555
* JsonApprovals. [verifyJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonApprovals.java#L17-L20) (String)
56+
* JsonJacksonApprovals. [verifyAsJson ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/JsonJacksonApprovals.java#L10-L13) (Object)
5657
* VelocityApprovals. [verify ](https://github.com/approvals/ApprovalTests.Java/blob/master/approvaltests/src/main/java/org/approvaltests/velocity/VelocityApprovals.java#L16-L19) (ContextAware)

approvaltests-tests/src/test/java/org/approvaltests/JsonFormattingTest.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
11
package org.approvaltests;
22

33
import com.google.gson.GsonBuilder;
4-
import com.google.gson.TypeAdapter;
5-
import com.google.gson.stream.JsonReader;
6-
import com.google.gson.stream.JsonWriter;
7-
import org.approvaltests.reporters.UseReporter;
8-
import org.approvaltests.reporters.macosx.DiffMergeReporter;
94
import org.junit.jupiter.api.Test;
105

11-
import java.io.IOException;
126
import java.time.Instant;
137

148
public class JsonFormattingTest
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package org.approvaltests;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnore;
4+
import org.junit.jupiter.api.Test;
5+
6+
public class JsonJacksonApprovalsTest
7+
{
8+
@Test
9+
void testDuplicateFields()
10+
{
11+
JsonJacksonApprovals.verifyAsJson(new MyOtherClass());
12+
}
13+
private static class MyClass
14+
{
15+
@JsonIgnore
16+
private String name = "MyClass";
17+
public String lastName = "MyClass";
18+
public String getName()
19+
{
20+
return name;
21+
}
22+
public void setName(String name)
23+
{
24+
this.name = name;
25+
}
26+
}
27+
private static class MyOtherClass extends MyClass
28+
{
29+
@JsonIgnore
30+
private String name = "MyOtherClass";
31+
public String getName()
32+
{
33+
return name;
34+
}
35+
public void setName(String name)
36+
{
37+
this.name = name;
38+
}
39+
}
40+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"lastName" : "MyClass"
3+
}

approvaltests-tests/src/test/java/org/approvaltests/OptionsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ void testEachMethodHasOneWithOptions()
8080
public static List<Class<?>> getApprovalClasses()
8181
{
8282
return Arrays.asList(Approvals.class, CombinationApprovals.class, AwtApprovals.class, JsonApprovals.class,
83-
VelocityApprovals.class);
83+
VelocityApprovals.class, JsonJacksonApprovals.class);
8484
}
8585
private void verifyEachVerifyMethodHasOneWithOptions(Class<?> approvalsClass)
8686
{

approvaltests/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,12 @@
3232
<scope>compile</scope>
3333
<optional>true</optional>
3434
</dependency>
35+
<dependency>
36+
<groupId>com.fasterxml.jackson.core</groupId>
37+
<artifactId>jackson-databind</artifactId>
38+
<version>2.13.3</version>
39+
<optional>true</optional>
40+
</dependency>
3541
<dependency>
3642
<groupId>commons-net</groupId>
3743
<artifactId>commons-net</artifactId>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.approvaltests;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
import com.spun.util.ObjectUtils;
6+
import org.approvaltests.core.Options;
7+
8+
public class JsonJacksonApprovals
9+
{
10+
public static void verifyAsJson(Object o)
11+
{
12+
verifyAsJson(o, new Options());
13+
}
14+
public static void verifyAsJson(Object o, Options options)
15+
{
16+
Approvals.verify(asJson(o), options.forFile().withExtension(".json"));
17+
}
18+
public static String asJson(Object o)
19+
{
20+
try
21+
{
22+
ObjectMapper objectMapper = new ObjectMapper();
23+
return objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(o);
24+
}
25+
catch (JsonProcessingException e)
26+
{
27+
throw ObjectUtils.throwAsError(e);
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)