From e05c6f4e3ab93229e21d60bdeba5309180abca5a Mon Sep 17 00:00:00 2001 From: Christoph Date: Fri, 6 Mar 2020 21:30:58 +0100 Subject: [PATCH] decreased visibility of group-fields -> adapted tests and GroupService --- .../java/mops/gruppen2/domain/Aggregate.java | 10 +++- src/main/java/mops/gruppen2/domain/Group.java | 13 +++-- .../mops/gruppen2/service/GroupService.java | 12 ++++- .../java/mops/gruppen2/domain/GroupTest.java | 53 +++++++------------ 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/main/java/mops/gruppen2/domain/Aggregate.java b/src/main/java/mops/gruppen2/domain/Aggregate.java index f09b3ea..105c57b 100644 --- a/src/main/java/mops/gruppen2/domain/Aggregate.java +++ b/src/main/java/mops/gruppen2/domain/Aggregate.java @@ -1,15 +1,23 @@ package mops.gruppen2.domain; +import lombok.Getter; import mops.gruppen2.domain.event.Event; import java.lang.reflect.Method; public abstract class Aggregate { + @Getter + protected final long id; + + protected Aggregate(long id) { + this.id = id; + } + /** * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf. * - * @param event + * @param event Einzelne Änderung an dem Aggregat */ public void applyEvent(Event event) { try { diff --git a/src/main/java/mops/gruppen2/domain/Group.java b/src/main/java/mops/gruppen2/domain/Group.java index 57ecd04..9594372 100644 --- a/src/main/java/mops/gruppen2/domain/Group.java +++ b/src/main/java/mops/gruppen2/domain/Group.java @@ -12,14 +12,13 @@ import java.util.Map; @EqualsAndHashCode(callSuper=false) @Getter public class Group extends Aggregate { - long id; - String title; - String description; - List members; - Map roles; + private String title; + private String description; + private List members; + private Map roles; - private void applyEvent(CreateGroupEvent event){ - this.id = event.getGroup_id(); + public Group(CreateGroupEvent event) { + super(event.getGroup_id()); this.title = event.getGroupTitle(); this.description = event.getGroupDescription(); this.members = new ArrayList<>(); diff --git a/src/main/java/mops/gruppen2/service/GroupService.java b/src/main/java/mops/gruppen2/service/GroupService.java index a5c959f..c8f5c0f 100644 --- a/src/main/java/mops/gruppen2/service/GroupService.java +++ b/src/main/java/mops/gruppen2/service/GroupService.java @@ -1,6 +1,7 @@ package mops.gruppen2.service; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.Event; import org.springframework.stereotype.Service; import java.util.List; @@ -8,8 +9,15 @@ import java.util.List; @Service public class GroupService { - Group buildGroupFromEvents(List eventList){ - Group newGroup = new Group(); + /** + * Konstruiert eine vollständige Gruppe aus Events, welche dieselbe Gruppe betreffen. + * + * @param event Initiales CreateGroup-Event + * @param eventList Die restlichen Events für diese Gruppe + * @return Gruppe auf aktuellem Stand + */ + Group buildGroupFromEvents(CreateGroupEvent event, List eventList){ + Group newGroup = new Group(event); eventList.forEach(newGroup::applyEvent); diff --git a/src/test/java/mops/gruppen2/domain/GroupTest.java b/src/test/java/mops/gruppen2/domain/GroupTest.java index 4541830..0aa8a42 100644 --- a/src/test/java/mops/gruppen2/domain/GroupTest.java +++ b/src/test/java/mops/gruppen2/domain/GroupTest.java @@ -2,62 +2,46 @@ package mops.gruppen2.domain; import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.CreateGroupEvent; +import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.UpdateRoleEvent; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import java.util.ArrayList; -import java.util.HashMap; - import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; class GroupTest { - AddUserEvent addUserEvent; - CreateGroupEvent createGroupEvent; - @BeforeEach public void setUp(){ } + @Disabled @Test void applyEvent() { } @Test - void applyCreateGroupEvent() { - String userId = "asd"; - CreateGroupEvent event = new CreateGroupEvent(1L,2,userId, "hello", "foo"); + void createSingleGroup() { + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,2, "asd", "hello", "foo"); - Group group1 = new Group(); - group1.applyEvent(event); + Group group = new Group(createGroupEvent); - Group group2 = new Group(); - group2.id = 2L; - group2.title = "hello"; - group2.description = "foo"; - group2.members = new ArrayList<>(); - group2.roles = new HashMap<>(); - - assertEquals(group2, group1); + assertThat(group.getDescription()).isEqualTo("foo"); + assertThat(group.getTitle()).isEqualTo("hello"); + assertThat(group.getId()).isEqualTo(2); } + // Verwendet CreateGroupEvent @Test - void applyAddUserEvent(){ - Group group = new Group(); - // Group testGroup = new Group(); - User user = new User("prof", "jens", "bendi", "hi@gmail.com"); - createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo"); - addUserEvent = new AddUserEvent(1L,1L, user); + void addSingleUser(){ + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo"); + Group group = new Group(createGroupEvent); - group.applyEvent(createGroupEvent); + User user = new User("prof", "jens", "bendi", "hi@gmail.com"); + AddUserEvent addUserEvent = new AddUserEvent(1L,1L, user); group.applyEvent(addUserEvent); - // testGroup.applyEvent(createGroupEvent); - // List testTeil = new ArrayList<>(); - // testTeil.add(user); - // testGroup.setMembers(testTeil); assertThat(group.getMembers().get(0)).isEqualTo(user); } @@ -66,10 +50,11 @@ class GroupTest { @Test void updateRoleForExistingUser() { // Arrange - Group group = new Group(); + CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L, 1L, "1L", "gruppe1", "Eine Testgruppe"); + Event addUserEvent = new AddUserEvent(1L, 1L, "5L", "Peter", "Pan", "123@mail.de"); - group.applyEvent(new CreateGroupEvent(1L, 1L, "1L", "gruppe1", "Eine Testgruppe")); - group.applyEvent(new AddUserEvent(1L, 1L, "5L", "Peter", "Pan", "123@mail.de")); + Group group = new Group(createGroupEvent); + group.applyEvent(addUserEvent); // Act group.applyEvent(new UpdateRoleEvent(1L, 1L, "5L", Role.ORGA));