From 66a6b9a1375192c95233fe85a44381fd547fa0ec Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 10 Mar 2020 15:59:09 +0100 Subject: [PATCH 1/8] added deserialization tests --- .../mops/gruppen2/service/EventService.java | 16 ++++++++++ .../mops/gruppen2/service/GroupService.java | 31 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index 0c1e879..c28080c 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -6,6 +6,8 @@ import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class EventService { private final SerializationService serializationService; @@ -48,4 +50,18 @@ public class EventService { } return tmpId; } + + public List findAllEvents() { + return null; + } + + public Event getEvent(EventDTO eventDTO) { + try { + return serializationService.deserializeEvent(eventDTO.getEvent_payload()); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + + return null; + } } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index dbf8abe..1bbb222 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -7,11 +7,19 @@ import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.Event; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; +import java.util.Map; @Service public class GroupService { + private final EventService eventService; + + public GroupService(EventService eventService) { + this.eventService = eventService; + } + /** * Konstruiert eine vollständige Gruppe aus Events, welche dieselbe Gruppe betreffen. * @@ -46,4 +54,27 @@ public class GroupService { } return newGroup; } + + public List projectEventList(Map groupMap, List events) { + for (Event event : events) { + if (event instanceof CreateGroupEvent) { + groupMap.put(event.getGroup_id(), new Group()); + } + + try { + Group group = groupMap.get(event.getGroup_id()); + + if (group == null) { + throw new GroupDoesNotExistException("Gruppe " + event.getGroup_id() + " existiert nicht"); + } + + group.applyEvent(event); + } catch (EventException e) { + e.printStackTrace(); + } + + } + + return new ArrayList<>(groupMap.values()); + } } From d229b2089a56614fb98fbd478e8b2ea558ce3029 Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 10 Mar 2020 16:01:27 +0100 Subject: [PATCH 2/8] add eventdto -> event conversion --- src/main/java/mops/gruppen2/service/EventService.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index c28080c..9207da3 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -6,6 +6,7 @@ import mops.gruppen2.domain.event.Event; import mops.gruppen2.repository.EventRepository; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; @Service @@ -64,4 +65,12 @@ public class EventService { return null; } + + public List getEvents(List eventDTOs) { + List events = new ArrayList<>(); + + eventDTOs.forEach(eventdto -> events.add(getEvent(eventdto))); + + return events; + } } From c553bdd9cceec1891aa2f34d3d41c3d50a73d463 Mon Sep 17 00:00:00 2001 From: killerber4t Date: Tue, 10 Mar 2020 16:17:31 +0100 Subject: [PATCH 3/8] refactored a few Methods in EventService --- .../mops/gruppen2/service/EventService.java | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/main/java/mops/gruppen2/service/EventService.java b/src/main/java/mops/gruppen2/service/EventService.java index 9207da3..0111ea0 100644 --- a/src/main/java/mops/gruppen2/service/EventService.java +++ b/src/main/java/mops/gruppen2/service/EventService.java @@ -52,25 +52,17 @@ public class EventService { return tmpId; } - public List findAllEvents() { - return null; - } - - public Event getEvent(EventDTO eventDTO) { - try { - return serializationService.deserializeEvent(eventDTO.getEvent_payload()); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - - return null; - } - - public List getEvents(List eventDTOs) { + public List findAllEvents() { + Iterable eventDTOS = eventStore.findAll(); List events = new ArrayList<>(); - - eventDTOs.forEach(eventdto -> events.add(getEvent(eventdto))); - + eventDTOS.forEach(eventDTO -> { + try { + events.add(serializationService.deserializeEvent(eventDTO.getEvent_payload())); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + }); return events; } + } From 2f4af867e86a3539f6499e26601c07623c4ad48a Mon Sep 17 00:00:00 2001 From: Christoph Date: Tue, 10 Mar 2020 16:29:28 +0100 Subject: [PATCH 4/8] added deserialization tests --- .../mops/gruppen2/service/GroupService.java | 40 +++---------------- .../mops/gruppen2/builder/EventBuilder.java | 8 ++-- 2 files changed, 9 insertions(+), 39 deletions(-) diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 1bbb222..5cfc3ac 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -8,6 +8,7 @@ import mops.gruppen2.domain.event.Event; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -20,41 +21,6 @@ public class GroupService { this.eventService = eventService; } - /** - * Konstruiert eine vollständige Gruppe aus Events, welche dieselbe Gruppe betreffen. - * - * @param eventList Die restlichen Events für diese Gruppe - * @return Gruppe auf aktuellem Stand - */ - Group buildGroupFromEvents(List eventList) throws EventException { - Group newGroup = new Group(); - - try { - if (!(eventList.get(0) instanceof CreateGroupEvent)) { - throw new GroupDoesNotExistException("Die Gruppe existiert nicht"); - } else { - newGroup.applyEvent(eventList.get(0)); - eventList.remove(0); - } - for (Event event : eventList) { - if (!(newGroup.getId() > 0)) { - throw new GroupDoesNotExistException("Die Gruppe existiert nicht"); - } - newGroup.applyEvent(event); - } - } catch (EventException e) { - if (e instanceof GroupDoesNotExistException) { - throw e; - } - e.printStackTrace(); - } - - if (newGroup.getId() < 0) { - return null; - } - return newGroup; - } - public List projectEventList(Map groupMap, List events) { for (Event event : events) { if (event instanceof CreateGroupEvent) { @@ -77,4 +43,8 @@ public class GroupService { return new ArrayList<>(groupMap.values()); } + + public List projectEventList(List events) { + return projectEventList(new HashMap<>(), events); + } } diff --git a/src/test/java/mops/gruppen2/builder/EventBuilder.java b/src/test/java/mops/gruppen2/builder/EventBuilder.java index a06fdf7..99fea37 100644 --- a/src/test/java/mops/gruppen2/builder/EventBuilder.java +++ b/src/test/java/mops/gruppen2/builder/EventBuilder.java @@ -21,7 +21,7 @@ public class EventBuilder { ); } - public static AddUserEvent randomAddUserEvent() { + public static AddUserEvent randomAddUserEvent(long group_id) { Faker faker = new Faker(); String firstname = faker.name().firstName(); @@ -29,7 +29,7 @@ public class EventBuilder { return new AddUserEvent( faker.random().nextLong(), - faker.random().nextLong(), + group_id, faker.random().hex(), firstname, lastname, @@ -37,11 +37,11 @@ public class EventBuilder { ); } - public static List randomAddUserEvents(int count) { + public static List randomAddUserEvents(int count, long group_id) { List eventList = new ArrayList<>(); for (int i = 0; i < count; i++) { - eventList.add(EventBuilder.randomAddUserEvent()); + eventList.add(EventBuilder.randomAddUserEvent(group_id)); } return eventList; From 68789099be2fbfc3261b89ee227164a66d8c368f Mon Sep 17 00:00:00 2001 From: killerber4t Date: Tue, 10 Mar 2020 16:54:48 +0100 Subject: [PATCH 5/8] add functionality for group_ids to User class Co-Authored-By: tomvahl --- src/main/java/mops/gruppen2/domain/User.java | 8 ++++++ .../gruppen2/service/TeilnehmerService.java | 26 +++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 src/main/java/mops/gruppen2/service/TeilnehmerService.java diff --git a/src/main/java/mops/gruppen2/domain/User.java b/src/main/java/mops/gruppen2/domain/User.java index efb14b9..e473615 100644 --- a/src/main/java/mops/gruppen2/domain/User.java +++ b/src/main/java/mops/gruppen2/domain/User.java @@ -5,6 +5,8 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Value; +import java.util.List; + @Value @AllArgsConstructor @EqualsAndHashCode(exclude = {"givenname", "familyname", "email"}) @@ -15,4 +17,10 @@ public class User { String givenname; String familyname; String email; + + List group_ids; + + public void addGroup(Long group_id){ + group_ids.add(group_id); + } } diff --git a/src/main/java/mops/gruppen2/service/TeilnehmerService.java b/src/main/java/mops/gruppen2/service/TeilnehmerService.java new file mode 100644 index 0000000..74cd6ea --- /dev/null +++ b/src/main/java/mops/gruppen2/service/TeilnehmerService.java @@ -0,0 +1,26 @@ +package mops.gruppen2.service; + +import mops.gruppen2.domain.User; +import mops.gruppen2.domain.event.Event; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TeilnehmerService { + GroupService groupService; + EventService eventService; + + public TeilnehmerService(GroupService groupService, EventService eventService){ + this.eventService = eventService; + this.groupService = groupService; + } + + public void assignGroups(User user){ + List events = eventService.findAllEvents(); + + for (Event event: events) { + if(user.getUser_id().equals(event.getUser_id())) user.addGroup(event.getGroup_id()); + } + } +} From 31f19f01999277da32fc21c3d98a1c4db77e3337 Mon Sep 17 00:00:00 2001 From: LukasEttel Date: Wed, 11 Mar 2020 13:47:41 +0100 Subject: [PATCH 6/8] Revert "add functionality for group_ids to User class" This reverts commit 68789099 --- src/main/java/mops/gruppen2/domain/User.java | 8 ------ .../gruppen2/service/TeilnehmerService.java | 26 ------------------- 2 files changed, 34 deletions(-) delete mode 100644 src/main/java/mops/gruppen2/service/TeilnehmerService.java diff --git a/src/main/java/mops/gruppen2/domain/User.java b/src/main/java/mops/gruppen2/domain/User.java index e473615..efb14b9 100644 --- a/src/main/java/mops/gruppen2/domain/User.java +++ b/src/main/java/mops/gruppen2/domain/User.java @@ -5,8 +5,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.Value; -import java.util.List; - @Value @AllArgsConstructor @EqualsAndHashCode(exclude = {"givenname", "familyname", "email"}) @@ -17,10 +15,4 @@ public class User { String givenname; String familyname; String email; - - List group_ids; - - public void addGroup(Long group_id){ - group_ids.add(group_id); - } } diff --git a/src/main/java/mops/gruppen2/service/TeilnehmerService.java b/src/main/java/mops/gruppen2/service/TeilnehmerService.java deleted file mode 100644 index 74cd6ea..0000000 --- a/src/main/java/mops/gruppen2/service/TeilnehmerService.java +++ /dev/null @@ -1,26 +0,0 @@ -package mops.gruppen2.service; - -import mops.gruppen2.domain.User; -import mops.gruppen2.domain.event.Event; -import org.springframework.stereotype.Service; - -import java.util.List; - -@Service -public class TeilnehmerService { - GroupService groupService; - EventService eventService; - - public TeilnehmerService(GroupService groupService, EventService eventService){ - this.eventService = eventService; - this.groupService = groupService; - } - - public void assignGroups(User user){ - List events = eventService.findAllEvents(); - - for (Event event: events) { - if(user.getUser_id().equals(event.getUser_id())) user.addGroup(event.getGroup_id()); - } - } -} From d102f9b0ee863e4bf8888a2aedb9c17ed0bb85c4 Mon Sep 17 00:00:00 2001 From: Mahgs Date: Wed, 11 Mar 2020 13:52:26 +0100 Subject: [PATCH 7/8] fixed GroupServiceTest for new Method in GroupService --- src/main/java/mops/gruppen2/domain/Group.java | 4 --- .../mops/gruppen2/service/GroupService.java | 28 +++++++++++------- .../java/mops/gruppen2/domain/GroupTest.java | 1 - .../gruppen2/service/GroupServiceTest.java | 29 ++++++++----------- 4 files changed, 30 insertions(+), 32 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index 268b439..e5d2e93 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -77,8 +77,4 @@ public class Group extends Aggregate { throw new UserNotFoundException("Nutzer wurde nicht gefunden!"); } } - - private void applyEvent(DeleteGroupEvent event) { - this.id = this.id * -1; - } } diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index 5cfc3ac..c9ab19d 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,9 +1,11 @@ package mops.gruppen2.service; +import lombok.EqualsAndHashCode; import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Exceptions.GroupDoesNotExistException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.event.CreateGroupEvent; +import mops.gruppen2.domain.event.DeleteGroupEvent; import mops.gruppen2.domain.event.Event; import org.springframework.stereotype.Service; @@ -21,22 +23,28 @@ public class GroupService { this.eventService = eventService; } - public List projectEventList(Map groupMap, List events) { + public List projectEventList(Map groupMap, List events) throws EventException { for (Event event : events) { if (event instanceof CreateGroupEvent) { groupMap.put(event.getGroup_id(), new Group()); } + if (event instanceof DeleteGroupEvent) { + groupMap.remove(event.getGroup_id()); + } else { + try { + Group group = groupMap.get(event.getGroup_id()); - try { - Group group = groupMap.get(event.getGroup_id()); + if (group == null) { + throw new GroupDoesNotExistException("Gruppe " + event.getGroup_id() + " existiert nicht"); + } - if (group == null) { - throw new GroupDoesNotExistException("Gruppe " + event.getGroup_id() + " existiert nicht"); + group.applyEvent(event); + } catch (EventException e) { + if (e instanceof GroupDoesNotExistException) { + throw e; + } + e.printStackTrace(); } - - group.applyEvent(event); - } catch (EventException e) { - e.printStackTrace(); } } @@ -44,7 +52,7 @@ public class GroupService { return new ArrayList<>(groupMap.values()); } - public List projectEventList(List events) { + public List projectEventList(List events) throws EventException { return projectEventList(new HashMap<>(), events); } } diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index 9d9f7da..eaece7a 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -1,6 +1,5 @@ package mops.gruppen2.domain; -import mops.gruppen2.domain.Exceptions.GroupDoesNotExistException; import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.event.*; diff --git a/src/test/java/mops/gruppen2/service/GroupServiceTest.java b/src/test/java/mops/gruppen2/service/GroupServiceTest.java index 0c2e56a..b02f963 100644 --- a/src/test/java/mops/gruppen2/service/GroupServiceTest.java +++ b/src/test/java/mops/gruppen2/service/GroupServiceTest.java @@ -10,18 +10,23 @@ import mops.gruppen2.domain.event.Event; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.mockito.configuration.IMockitoConfiguration; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.mock; class GroupServiceTest { - GroupService groupService = new GroupService(); + GroupService groupService; @BeforeEach public void setUp() { + groupService = new GroupService(mock(EventService.class)); } @Test @@ -36,7 +41,7 @@ class GroupServiceTest { Assertions.assertThrows(GroupDoesNotExistException.class, () -> { - groupService.buildGroupFromEvents(eventList); + groupService.projectEventList(eventList); }); } @@ -48,30 +53,20 @@ class GroupServiceTest { eventList.add(new DeleteGroupEvent(44, 10, "loescher78")); - assertThat(groupService.buildGroupFromEvents(eventList)).isEqualTo(null); + List list = new ArrayList<>(); + + assertThat(groupService.projectEventList(eventList)).isEqualTo(list); } @Test - void firstEventNotCreateGroup() throws Exception { - List eventList = new ArrayList<>(); - - eventList.add(new DeleteGroupEvent(44, 10, "loescher78")); - eventList.add(new CreateGroupEvent(1, 10L, "prof1", "hi", "foo")); - - Assertions.assertThrows(GroupDoesNotExistException.class, () -> { - groupService.buildGroupFromEvents(eventList); - }); - } - - @Test - void sucsessfullReturnGroup() throws Exception { + void rightClassForSucsessfulGroup() throws Exception { List eventList = new ArrayList<>(); eventList.add(new CreateGroupEvent(1, 10L, "prof1", "hi", "foo")); eventList.add(new AddUserEvent(900L, 10L, "Ulli", "Ulli", "Honnis", "FC@B.de")); - assertThat(groupService.buildGroupFromEvents(eventList)).isInstanceOf(Group.class); + assertThat(groupService.projectEventList(eventList).get(0)).isInstanceOf(Group.class); } } \ No newline at end of file From 0e979c1f045cc2ec0b23008769bad43b162927b2 Mon Sep 17 00:00:00 2001 From: Mahgs Date: Wed, 11 Mar 2020 14:02:23 +0100 Subject: [PATCH 8/8] removed deleteGroupTest in GroupTest -> moved to GroupServiceTest --- src/test/java/mops/gruppen2/domain/GroupTest.java | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index eaece7a..9130ee5 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -153,17 +153,4 @@ class GroupTest { assertThat(group.getDescription()).isEqualTo("Tolle Beschreibung"); } - - @Test - void deleteGroup() throws Exception { - CreateGroupEvent createGroupEvent = new CreateGroupEvent(1, 1L, "prof1", "hi", "foo"); - Group group = new Group(); - group.applyEvent(createGroupEvent); - - DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(44, 1, "loescher78"); - group.applyEvent(deleteGroupEvent); - - assertThat(group.id).isEqualTo(-1L); - } - }