Skip to content

Commit 3657671

Browse files
authored
Added tests to verify that the JsonIgnoreProperties annotation is being used. (#14)
1 parent 8922ca3 commit 3657671

File tree

3 files changed

+68
-17
lines changed

3 files changed

+68
-17
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,7 @@
2525
* Implemented Exercise 16 - Merging Streams.
2626
* Implemented Exercise 18 - Aggregating Flink Data using Windowing.
2727
* Implemented Exercise 20 - Managing State in Flink.
28+
29+
## Version 2.0.1
30+
31+
* Added additional tests to verify the serialization/deserialization of the models, including one for testing the use of the JsonIgnoreProperties annotation.

staging/10-deserialization/src/test/java/models/SkyOneAirlinesFlightDataTest.java

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package models;
22

3+
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper;
4+
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
35
import org.junit.jupiter.api.Test;
46

57
import static org.apache.flink.types.PojoTestUtils.assertSerializedAsPojo;
68
import static org.junit.jupiter.api.Assertions.*;
79

810
class SkyOneAirlinesFlightDataTest {
911

12+
ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
13+
1014
@Test
1115
void theClass_shouldBeSerializableAsAPOJO() {
1216
assertSerializedAsPojo(SkyOneAirlinesFlightData.class);
@@ -65,16 +69,36 @@ public void toString_shouldReturnTheExpectedResults() {
6569
SkyOneAirlinesFlightData flightData = new TestHelpers.SkyOneBuilder().build();
6670

6771
String expected = "SkyOneAirlinesFlightData{" +
68-
"emailAddress='" + flightData.getEmailAddress() + '\'' +
69-
", flightDepartureTime=" + flightData.getFlightDepartureTime() +
70-
", iataDepartureCode='" + flightData.getIataDepartureCode() + '\'' +
71-
", flightArrivalTime=" + flightData.getFlightArrivalTime() +
72-
", iataArrivalCode='" + flightData.getIataArrivalCode() + '\'' +
73-
", flightNumber='" + flightData.getFlightNumber() + '\'' +
74-
", confirmation='" + flightData.getConfirmation() + '\'' +
75-
'}';
72+
"emailAddress='" + flightData.getEmailAddress() + '\'' +
73+
", flightDepartureTime=" + flightData.getFlightDepartureTime() +
74+
", iataDepartureCode='" + flightData.getIataDepartureCode() + '\'' +
75+
", flightArrivalTime=" + flightData.getFlightArrivalTime() +
76+
", iataArrivalCode='" + flightData.getIataArrivalCode() + '\'' +
77+
", flightNumber='" + flightData.getFlightNumber() + '\'' +
78+
", confirmation='" + flightData.getConfirmation() + '\'' +
79+
'}';
7680

7781
assertEquals(expected, flightData.toString());
7882

7983
}
84+
85+
@Test
86+
public void serializer_shouldSerializeAndDeserializeTheCorrectObject() throws Exception {
87+
SkyOneAirlinesFlightData original = new TestHelpers.SkyOneBuilder().build();
88+
89+
String serialized = mapper.writeValueAsString(original);
90+
SkyOneAirlinesFlightData deserialized = mapper.readValue(serialized, SkyOneAirlinesFlightData.class);
91+
92+
assertSerializedAsPojo(SkyOneAirlinesFlightData.class);
93+
assertEquals(original, deserialized);
94+
}
95+
96+
@Test
97+
public void serializer_shouldHandleUnknownFields() throws Exception {
98+
String json = "{\"emailAddress\":\"[email protected]\",\"flightDepartureTime\":\"2023-10-16T22:25:00.000Z\",\"iataDepartureCode\":\"LAS\",\"flightArrivalTime\":\"2023-10-17T09:38:00.000Z\",\"iataArrivalCode\":\"BOS\",\"flightNumber\":\"SKY1522\",\"confirmation\":\"SKY1OUJUUK\",\"unknownField\":\"ignore\"}";
99+
100+
SkyOneAirlinesFlightData object = mapper.readValue(json, SkyOneAirlinesFlightData.class);
101+
102+
assertInstanceOf(SkyOneAirlinesFlightData.class, object);
103+
}
80104
}

staging/16-merging-streams/src/test/java/models/SunsetAirFlightDataTest.java

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package models;
22

3+
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper;
4+
import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
35
import org.junit.jupiter.api.Test;
46

57
import static org.apache.flink.types.PojoTestUtils.assertSerializedAsPojo;
68
import static org.junit.jupiter.api.Assertions.*;
79

810
class SunsetAirFlightDataTest {
911

12+
ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
13+
1014
@Test
1115
void theClass_shouldBeSerializableAsAPOJO() {
1216
assertSerializedAsPojo(SunsetAirFlightData.class);
@@ -61,19 +65,38 @@ public void equals_shouldReturnFalse_forTwoDifferentFlights() {
6165

6266
@Test
6367
public void toFlightData_shouldConvertToAFlightDataObject() {
64-
SunsetAirFlightData skyOne = new TestHelpers.SunsetBuilder().build();
68+
SunsetAirFlightData sunset = new TestHelpers.SunsetBuilder().build();
6569
FlightData expected = new FlightData();
66-
expected.setEmailAddress(skyOne.getCustomerEmailAddress());
67-
expected.setDepartureTime(skyOne.getDepartureTime());
68-
expected.setDepartureAirportCode(skyOne.getDepartureAirport());
69-
expected.setArrivalTime(skyOne.getArrivalTime());
70-
expected.setArrivalAirportCode(skyOne.getArrivalAirport());
71-
expected.setFlightNumber(skyOne.getFlightId());
72-
expected.setConfirmationCode(skyOne.getReferenceNumber());
70+
expected.setEmailAddress(sunset.getCustomerEmailAddress());
71+
expected.setDepartureTime(sunset.getDepartureTime());
72+
expected.setDepartureAirportCode(sunset.getDepartureAirport());
73+
expected.setArrivalTime(sunset.getArrivalTime());
74+
expected.setArrivalAirportCode(sunset.getArrivalAirport());
75+
expected.setFlightNumber(sunset.getFlightId());
76+
expected.setConfirmationCode(sunset.getReferenceNumber());
7377

74-
FlightData actual = skyOne.toFlightData();
78+
FlightData actual = sunset.toFlightData();
7579

7680
assertEquals(expected, actual);
7781
}
7882

83+
@Test
84+
public void serializer_shouldSerializeAndDeserializeTheCorrectObject() throws Exception {
85+
SunsetAirFlightData original = new TestHelpers.SunsetBuilder().build();
86+
87+
String serialized = mapper.writeValueAsString(original);
88+
SunsetAirFlightData deserialized = mapper.readValue(serialized, SunsetAirFlightData.class);
89+
90+
assertSerializedAsPojo(SunsetAirFlightData.class);
91+
assertEquals(original, deserialized);
92+
}
93+
94+
@Test
95+
public void serializer_shouldHandleUnknownFields() throws Exception {
96+
String json = "{\"emailAddress\":\"[email protected]\",\"flightDepartureTime\":\"2023-10-16T22:25:00.000Z\",\"iataDepartureCode\":\"LAS\",\"flightArrivalTime\":\"2023-10-17T09:38:00.000Z\",\"iataArrivalCode\":\"BOS\",\"flightNumber\":\"SKY1522\",\"confirmation\":\"SKY1OUJUUK\",\"unknownField\":\"ignore\"}";
97+
98+
SunsetAirFlightData object = mapper.readValue(json, SunsetAirFlightData.class);
99+
100+
assertInstanceOf(SunsetAirFlightData.class, object);
101+
}
79102
}

0 commit comments

Comments
 (0)