From 20fc3bd6fa2119ad20c99b053c138f8adcfc0007 Mon Sep 17 00:00:00 2001 From: Kai Moritz Date: Sun, 2 Feb 2025 17:06:55 +0100 Subject: [PATCH] =?utf8?q?Nachrichten=20=C3=BCberarbeitet?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 + pom.xml | 5 +++ src/main/java/de/juplo/messages/Add.java | 7 +++- .../java/de/juplo/messages/Calculate.java | 8 +++- src/main/java/de/juplo/messages/Message.java | 2 +- .../java/de/juplo/messages/MessageTest.java | 42 +++++++++++++++---- 6 files changed, 54 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index 0d3fdb9b..16cf7cfd 100644 --- a/build.gradle +++ b/build.gradle @@ -34,6 +34,8 @@ dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' + testCompileOnly 'org.projectlombok:lombok' + testAnnotationProcessor 'org.projectlombok:lombok' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' } diff --git a/pom.xml b/pom.xml index e6327588..32610c4f 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,11 @@ spring-boot-starter-test test + + org.assertj + assertj-core + test + diff --git a/src/main/java/de/juplo/messages/Add.java b/src/main/java/de/juplo/messages/Add.java index 940aed33..45b6ef3b 100644 --- a/src/main/java/de/juplo/messages/Add.java +++ b/src/main/java/de/juplo/messages/Add.java @@ -1,13 +1,18 @@ package de.juplo.messages; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; +import lombok.*; @Data +@EqualsAndHashCode(callSuper = false) +@Builder +@NoArgsConstructor +@AllArgsConstructor(access = AccessLevel.PRIVATE) @JsonIgnoreProperties(ignoreUnknown = true) public class Add extends Message { + private Integer number; private Integer next; diff --git a/src/main/java/de/juplo/messages/Calculate.java b/src/main/java/de/juplo/messages/Calculate.java index 07f0dc82..eae1c961 100644 --- a/src/main/java/de/juplo/messages/Calculate.java +++ b/src/main/java/de/juplo/messages/Calculate.java @@ -1,13 +1,19 @@ package de.juplo.messages; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import lombok.Data; +import lombok.*; @Data +@EqualsAndHashCode(callSuper = false) +@Builder +@NoArgsConstructor +@AllArgsConstructor(access = AccessLevel.PRIVATE) @JsonIgnoreProperties(ignoreUnknown = true) public class Calculate extends Message { + private Integer number; + @Override public Type getType() { diff --git a/src/main/java/de/juplo/messages/Message.java b/src/main/java/de/juplo/messages/Message.java index a20076f4..ff020e8e 100644 --- a/src/main/java/de/juplo/messages/Message.java +++ b/src/main/java/de/juplo/messages/Message.java @@ -3,7 +3,7 @@ package de.juplo.messages; public abstract class Message { - public enum Type {ADD, CALC} + public enum Type { ADD, CALC } public abstract Type getType(); } diff --git a/src/test/java/de/juplo/messages/MessageTest.java b/src/test/java/de/juplo/messages/MessageTest.java index 6092706f..d226febb 100644 --- a/src/test/java/de/juplo/messages/MessageTest.java +++ b/src/test/java/de/juplo/messages/MessageTest.java @@ -2,28 +2,52 @@ package de.juplo.messages; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import org.junit.jupiter.api.Assertions; +import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatCode; + +@Slf4j public class MessageTest { ObjectMapper mapper = new ObjectMapper(); @Test - @DisplayName("Deserialize a MessageAddNumber message") - public void testDeserializeMessageAddNumber() + @DisplayName("Serialization roundtrip for message Add") + public void testSerializationAdd() throws JsonProcessingException + { + Add before = Add.builder().number(66).next(6).build(); + String json = mapper.writeValueAsString(before); + Add after = mapper.readValue(json, Add.class); + assertThat(after).isEqualTo(before); + } + + @Test + @DisplayName("Serialization roundtrip for message Calculate") + public void testSerializationCalc() throws JsonProcessingException + { + Calculate before = Calculate.builder().number(66).build(); + String json = mapper.writeValueAsString(before); + Calculate after = mapper.readValue(json, Calculate.class); + assertThat(after).isEqualTo(before); + } + + @Test + @DisplayName("Deserialization of an Add message with additional fields does not throw an exception") + public void testDeserializeAdd() { - Assertions.assertDoesNotThrow(() -> mapper.readValue("{\"next\":42}", Add.class)); - Assertions.assertDoesNotThrow(() -> mapper.readValue("{\"number\":666,\"next\":42}", Add.class)); + assertThatCode(() -> mapper.readValue("{\"next\":42,\"ignore\":\"foo\"}", Add.class)).doesNotThrowAnyException(); + assertThatCode(() -> mapper.readValue("{\"number\":666,\"next\":42,\"ignore\":\"foo\"}", Add.class)).doesNotThrowAnyException(); } @Test - @DisplayName("Deserialize a MessageCalculateSum message") - public void testDeserializeMessageCalculateSum() throws JsonProcessingException + @DisplayName("Deserialization of a Calculate message with additional fields does not throw an exception") + public void testDeserializeCalculate() { - Assertions.assertDoesNotThrow(() -> mapper.readValue("{}", Calculate.class)); - Assertions.assertDoesNotThrow(() -> mapper.readValue("{\"number\":666}", Calculate.class)); + assertThatCode(() -> mapper.readValue("{\"ignore\":\"foo\"}", Calculate.class)).doesNotThrowAnyException(); + assertThatCode(() -> mapper.readValue("{\"number\":666,\"ignore\":\"foo\"}", Calculate.class)).doesNotThrowAnyException(); } } -- 2.20.1