decreased visibility of group-fields -> adapted tests and GroupService
This commit is contained in:
@ -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 {
|
||||||
|
|||||||
@ -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<>();
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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));
|
||||||
|
|||||||
Reference in New Issue
Block a user