1

decreased visibility of group-fields -> adapted tests and GroupService

This commit is contained in:
Christoph
2020-03-06 21:30:58 +01:00
parent fb3a94cf04
commit e05c6f4e3a
4 changed files with 44 additions and 44 deletions

View File

@ -1,15 +1,23 @@
package mops.gruppen2.domain; package mops.gruppen2.domain;
import lombok.Getter;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import java.lang.reflect.Method; import java.lang.reflect.Method;
public abstract class Aggregate { 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. * Ruft die spezifische applyEvent-Methode im entsprechenden Aggregat auf.
* *
* @param event * @param event Einzelne Änderung an dem Aggregat
*/ */
public void applyEvent(Event event) { public void applyEvent(Event event) {
try { try {

View File

@ -12,14 +12,13 @@ import java.util.Map;
@EqualsAndHashCode(callSuper=false) @EqualsAndHashCode(callSuper=false)
@Getter @Getter
public class Group extends Aggregate { public class Group extends Aggregate {
long id; private String title;
String title; private String description;
String description; private List<User> members;
List<User> members; private Map<User, Role> roles;
Map<User, Role> roles;
private void applyEvent(CreateGroupEvent event){ public Group(CreateGroupEvent event) {
this.id = event.getGroup_id(); super(event.getGroup_id());
this.title = event.getGroupTitle(); this.title = event.getGroupTitle();
this.description = event.getGroupDescription(); this.description = event.getGroupDescription();
this.members = new ArrayList<>(); this.members = new ArrayList<>();

View File

@ -1,6 +1,7 @@
package mops.gruppen2.service; package mops.gruppen2.service;
import mops.gruppen2.domain.Group; import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.Event; import mops.gruppen2.domain.event.Event;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@ -8,8 +9,15 @@ import java.util.List;
@Service @Service
public class GroupService { public class GroupService {
Group buildGroupFromEvents(List<Event> 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<Event> eventList){
Group newGroup = new Group(event);
eventList.forEach(newGroup::applyEvent); eventList.forEach(newGroup::applyEvent);

View File

@ -2,62 +2,46 @@ package mops.gruppen2.domain;
import mops.gruppen2.domain.event.AddUserEvent; import mops.gruppen2.domain.event.AddUserEvent;
import mops.gruppen2.domain.event.CreateGroupEvent; import mops.gruppen2.domain.event.CreateGroupEvent;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.domain.event.UpdateRoleEvent; import mops.gruppen2.domain.event.UpdateRoleEvent;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; 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.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
class GroupTest { class GroupTest {
AddUserEvent addUserEvent;
CreateGroupEvent createGroupEvent;
@BeforeEach @BeforeEach
public void setUp(){ public void setUp(){
} }
@Disabled
@Test @Test
void applyEvent() { void applyEvent() {
} }
@Test @Test
void applyCreateGroupEvent() { void createSingleGroup() {
String userId = "asd"; CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,2, "asd", "hello", "foo");
CreateGroupEvent event = new CreateGroupEvent(1L,2,userId, "hello", "foo");
Group group1 = new Group(); Group group = new Group(createGroupEvent);
group1.applyEvent(event);
Group group2 = new Group(); assertThat(group.getDescription()).isEqualTo("foo");
group2.id = 2L; assertThat(group.getTitle()).isEqualTo("hello");
group2.title = "hello"; assertThat(group.getId()).isEqualTo(2);
group2.description = "foo";
group2.members = new ArrayList<>();
group2.roles = new HashMap<>();
assertEquals(group2, group1);
} }
// Verwendet CreateGroupEvent
@Test @Test
void applyAddUserEvent(){ void addSingleUser(){
Group group = new Group(); CreateGroupEvent createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo");
// Group testGroup = new Group(); Group group = new Group(createGroupEvent);
User user = new User("prof", "jens", "bendi", "hi@gmail.com");
createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo");
addUserEvent = new AddUserEvent(1L,1L, user);
group.applyEvent(createGroupEvent); User user = new User("prof", "jens", "bendi", "hi@gmail.com");
AddUserEvent addUserEvent = new AddUserEvent(1L,1L, user);
group.applyEvent(addUserEvent); group.applyEvent(addUserEvent);
// testGroup.applyEvent(createGroupEvent);
// List<User> testTeil = new ArrayList<>();
// testTeil.add(user);
// testGroup.setMembers(testTeil);
assertThat(group.getMembers().get(0)).isEqualTo(user); assertThat(group.getMembers().get(0)).isEqualTo(user);
} }
@ -66,10 +50,11 @@ class GroupTest {
@Test @Test
void updateRoleForExistingUser() { void updateRoleForExistingUser() {
// Arrange // 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 group = new Group(createGroupEvent);
group.applyEvent(new AddUserEvent(1L, 1L, "5L", "Peter", "Pan", "123@mail.de")); group.applyEvent(addUserEvent);
// Act // Act
group.applyEvent(new UpdateRoleEvent(1L, 1L, "5L", Role.ORGA)); group.applyEvent(new UpdateRoleEvent(1L, 1L, "5L", Role.ORGA));