From 160e03d9e98b59225352e1f354a0177209659160 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Mon, 9 Mar 2020 14:57:32 +0100 Subject: [PATCH 1/4] add test for SerializationService --- .../service/SerializationServiceTest.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/test/java/mops/gruppen2/service/SerializationServiceTest.java diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java new file mode 100644 index 0000000..af9fa3f --- /dev/null +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -0,0 +1,32 @@ +package mops.gruppen2.service; + +import mops.gruppen2.domain.event.Event; +import mops.gruppen2.repository.EventRepository; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class SerializationServiceTest { + + EventRepository eventRepository; + + @BeforeEach + public void setUp(){ + } + + + @Disabled + @Test + void applyEvent() { + } + + @Test + void serializeEventTest(){ + Event event = new Event(1,1,"1"); + SerializationService serializationService = new SerializationService(eventRepository); + + } + +} \ No newline at end of file From 4186e7c09cea826df699ef209d0518f09c382814 Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 15:47:17 +0100 Subject: [PATCH 2/4] Change Lombok annotations to enable Jackson deserializing --- .../gruppen2/domain/event/AddUserEvent.java | 10 ++++--- .../domain/event/CreateGroupEvent.java | 10 ++++--- .../domain/event/DeleteUserEvent.java | 8 +++--- .../mops/gruppen2/domain/event/Event.java | 26 +++++++++++++++---- .../event/UpdateGroupDescriptionEvent.java | 10 ++++--- .../domain/event/UpdateGroupTitleEvent.java | 10 ++++--- .../domain/event/UpdateRoleEvent.java | 8 +++--- 7 files changed, 53 insertions(+), 29 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index fd66ee9..f4ab0cc 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -1,14 +1,16 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; import mops.gruppen2.domain.User; /** * Fügt einen einzelnen Nutzer einer Gruppe hinzu. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class AddUserEvent extends Event { String givenname; String familyname; diff --git a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java index 1f2a3e1..bef0e9d 100644 --- a/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/CreateGroupEvent.java @@ -1,10 +1,12 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class CreateGroupEvent extends Event { String groupTitle; String groupDescription; diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 366dae2..3d47903 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,13 +1,13 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.*; /** * Entfernt ein einzelnes Mitglied einer Gruppe. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class DeleteUserEvent extends Event { public DeleteUserEvent(long event_id, long group_id, String user_id) { diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 65f4584..fca7880 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -1,12 +1,28 @@ package mops.gruppen2.domain.event; +import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import lombok.Value; -import lombok.experimental.NonFinal; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; -@Value -@NonFinal -@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME) + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@JsonTypeInfo( + include = JsonTypeInfo.As.PROPERTY, + use = JsonTypeInfo.Id.NAME, + property = "type" +) +@JsonSubTypes({ + @JsonSubTypes.Type(value = AddUserEvent.class, name = "AddUserEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "CreateGroupEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "DeleteUserEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupDescriptionEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateGroupTitleEvent"), + @JsonSubTypes.Type(value = AddUserEvent.class, name = "UpdateRoleEvent"), +}) public class Event { long event_id; long group_id; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java index d4bc16c..f8139d3 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupDescriptionEvent.java @@ -1,13 +1,15 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; /** * Ändert nur die Gruppenbeschreibung. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateGroupDescriptionEvent extends Event { String newGroupDescription; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java index 4f78f17..dc443e9 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateGroupTitleEvent.java @@ -1,13 +1,15 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; /** * Ändert nur den Gruppentitel. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateGroupTitleEvent extends Event { String newGroupTitle; diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index ae8bd5e..76d18c5 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -1,14 +1,14 @@ package mops.gruppen2.domain.event; -import lombok.EqualsAndHashCode; -import lombok.Value; +import lombok.*; import mops.gruppen2.domain.Role; /** * Aktualisiert die Gruppenrolle eines Teilnehmers. */ -@EqualsAndHashCode(callSuper = true) -@Value +@Getter +@AllArgsConstructor +@NoArgsConstructor public class UpdateRoleEvent extends Event { Role newRole; From 1b1de974c6b79c64f17e69785a53ccc93a7142eb Mon Sep 17 00:00:00 2001 From: Christoph Date: Mon, 9 Mar 2020 15:49:20 +0100 Subject: [PATCH 3/4] Add class to build random events for easier testing --- .../mops/gruppen2/builder/EventBuilder.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/test/java/mops/gruppen2/builder/EventBuilder.java diff --git a/src/test/java/mops/gruppen2/builder/EventBuilder.java b/src/test/java/mops/gruppen2/builder/EventBuilder.java new file mode 100644 index 0000000..a06fdf7 --- /dev/null +++ b/src/test/java/mops/gruppen2/builder/EventBuilder.java @@ -0,0 +1,92 @@ +package mops.gruppen2.builder; + +import com.github.javafaker.Faker; +import mops.gruppen2.domain.Role; +import mops.gruppen2.domain.event.*; + +import java.util.ArrayList; +import java.util.List; + +public class EventBuilder { + + public static CreateGroupEvent randomCreateGroupEvent() { + Faker faker = new Faker(); + + return new CreateGroupEvent( + faker.random().nextLong(), + faker.random().nextLong(), + faker.random().hex(), + faker.leagueOfLegends().champion(), + faker.leagueOfLegends().quote() + ); + } + + public static AddUserEvent randomAddUserEvent() { + Faker faker = new Faker(); + + String firstname = faker.name().firstName(); + String lastname = faker.name().lastName(); + + return new AddUserEvent( + faker.random().nextLong(), + faker.random().nextLong(), + faker.random().hex(), + firstname, + lastname, + firstname + "." + lastname + "@mail.de" + ); + } + + public static List randomAddUserEvents(int count) { + List eventList = new ArrayList<>(); + + for (int i = 0; i < count; i++) { + eventList.add(EventBuilder.randomAddUserEvent()); + } + + return eventList; + } + + public static DeleteUserEvent randomDeleteUserEvent(long group_id, String user_id) { + Faker faker = new Faker(); + + return new DeleteUserEvent( + faker.random().nextLong(), + group_id, + user_id + ); + } + + public static UpdateGroupDescriptionEvent randomUpdateGroupDescriptionEvent(long group_id) { + Faker faker = new Faker(); + + return new UpdateGroupDescriptionEvent( + faker.random().nextLong(), + group_id, + faker.random().hex(), + faker.leagueOfLegends().quote() + ); + } + + public static UpdateGroupTitleEvent randomUpdateGroupTitleEvent(long group_id) { + Faker faker = new Faker(); + + return new UpdateGroupTitleEvent( + faker.random().nextLong(), + group_id, + faker.random().hex(), + faker.leagueOfLegends().champion() + ); + } + + public static UpdateRoleEvent randomUpdateRoleEvent(long group_id, String user_id, Role role) { + Faker faker = new Faker(); + + return new UpdateRoleEvent( + faker.random().nextLong(), + group_id, + user_id, + role + ); + } +} From 23cff2c3d3c04591f8fddf6f89b305bcfbc7c395 Mon Sep 17 00:00:00 2001 From: tomvahl Date: Mon, 9 Mar 2020 15:52:55 +0100 Subject: [PATCH 4/4] add test SerializationEvent test --- .../service/SerializationServiceTest.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java index af9fa3f..21c4555 100644 --- a/src/test/java/mops/gruppen2/service/SerializationServiceTest.java +++ b/src/test/java/mops/gruppen2/service/SerializationServiceTest.java @@ -1,16 +1,20 @@ package mops.gruppen2.service; +import com.fasterxml.jackson.core.JsonProcessingException; +import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; class SerializationServiceTest { EventRepository eventRepository; + Event event; @BeforeEach public void setUp(){ @@ -23,10 +27,15 @@ class SerializationServiceTest { } @Test - void serializeEventTest(){ - Event event = new Event(1,1,"1"); + void serializeEventTest() { + event = new Event(1,1,"1"); SerializationService serializationService = new SerializationService(eventRepository); - + try { + assertThat(serializationService.serializeEvent(event)).isEqualTo("{\"Event\":{\"event_id\":1,\"group_id\":1,\"user_id\":\"1\"}}"); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } } + } \ No newline at end of file