made events immutable, removed group-setters -> changed tests to work without setters.
This commit is contained in:
@ -1,13 +1,8 @@
|
|||||||
package mops.gruppen2.domain;
|
package mops.gruppen2.domain;
|
||||||
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Getter;
|
||||||
import mops.gruppen2.domain.event.*;
|
import mops.gruppen2.domain.event.*;
|
||||||
import mops.gruppen2.domain.event.AddUserEvent;
|
|
||||||
import mops.gruppen2.domain.event.CreateGroupEvent;
|
|
||||||
import mops.gruppen2.domain.event.UpdateGroupDescriptionEvent;
|
|
||||||
import mops.gruppen2.domain.event.UpdateGroupTitleEvent;
|
|
||||||
import mops.gruppen2.domain.event.DeleteUserEvent;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -15,7 +10,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper=false)
|
@EqualsAndHashCode(callSuper=false)
|
||||||
@Data
|
@Getter
|
||||||
public class Group extends Aggregate {
|
public class Group extends Aggregate {
|
||||||
long id;
|
long id;
|
||||||
String title;
|
String title;
|
||||||
@ -23,7 +18,7 @@ public class Group extends Aggregate {
|
|||||||
List<User> members;
|
List<User> members;
|
||||||
Map<User, Role> roles;
|
Map<User, Role> roles;
|
||||||
|
|
||||||
public void applyEvent(CreateGroupEvent event){
|
private void applyEvent(CreateGroupEvent event){
|
||||||
this.id = event.getGroup_id();
|
this.id = event.getGroup_id();
|
||||||
this.title = event.getGroupTitle();
|
this.title = event.getGroupTitle();
|
||||||
this.description = event.getGroupDescription();
|
this.description = event.getGroupDescription();
|
||||||
@ -31,7 +26,7 @@ public class Group extends Aggregate {
|
|||||||
this.roles = new HashMap<>();
|
this.roles = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEvent(UpdateRoleEvent event) {
|
private void applyEvent(UpdateRoleEvent event) {
|
||||||
members.stream()
|
members.stream()
|
||||||
.filter(user -> user.getUser_id().equals(event.getUser_id()))
|
.filter(user -> user.getUser_id().equals(event.getUser_id()))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
@ -39,26 +34,21 @@ public class Group extends Aggregate {
|
|||||||
() -> System.out.println("UserNotFoundException"));
|
() -> System.out.println("UserNotFoundException"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEvent(AddUserEvent event){
|
private void applyEvent(AddUserEvent event){
|
||||||
User user = new User();
|
User user = new User(event.getUser_id(), event.getGivenname(), event.getFamilyname(), event.getEmail());
|
||||||
|
|
||||||
user.setUser_id(event.getUser_id());
|
|
||||||
user.setGivenname(event.getGivenname());
|
|
||||||
user.setFamilyname(event.getFamilyname());
|
|
||||||
user.setEmail(event.getEmail());
|
|
||||||
|
|
||||||
this.members.add(user);
|
this.members.add(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEvent(UpdateGroupTitleEvent event) {
|
private void applyEvent(UpdateGroupTitleEvent event) {
|
||||||
this.title = event.getNewGroupTitle();
|
this.title = event.getNewGroupTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEvent(UpdateGroupDescriptionEvent event) {
|
private void applyEvent(UpdateGroupDescriptionEvent event) {
|
||||||
this.description = event.getNewGroupDescription();
|
this.description = event.getNewGroupDescription();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyEvent(DeleteUserEvent event) {
|
private void applyEvent(DeleteUserEvent event) {
|
||||||
for (User user : members) {
|
for (User user : members) {
|
||||||
if (user.getUser_id().equals(event.getUser_id())) {
|
if (user.getUser_id().equals(event.getUser_id())) {
|
||||||
this.members.remove(user);
|
this.members.remove(user);
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Value;
|
||||||
|
import mops.gruppen2.domain.User;
|
||||||
|
|
||||||
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Value
|
||||||
public class AddUserEvent extends Event{
|
public class AddUserEvent extends Event{
|
||||||
String givenname, familyname, email;
|
String givenname, familyname, email;
|
||||||
|
|
||||||
@ -12,4 +15,11 @@ public class AddUserEvent extends Event{
|
|||||||
this.familyname = familyname;
|
this.familyname = familyname;
|
||||||
this.email = email;
|
this.email = email;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AddUserEvent(long event_id, long group_id, User user) {
|
||||||
|
super(event_id, group_id, user.getUser_id());
|
||||||
|
this.givenname = user.getGivenname();
|
||||||
|
this.familyname = user.getFamilyname();
|
||||||
|
this.email = user.getEmail();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,12 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Value
|
||||||
public class CreateGroupEvent extends Event {
|
public class CreateGroupEvent extends Event {
|
||||||
String groupTitle;
|
String groupTitle, groupDescription;
|
||||||
String groupDescription;
|
|
||||||
|
|
||||||
public CreateGroupEvent(long event_id, long group_id, String user_id, String groupTitle, String groupDescription) {
|
public CreateGroupEvent(long event_id, long group_id, String user_id, String groupTitle, String groupDescription) {
|
||||||
super(event_id, group_id, user_id);
|
super(event_id, group_id, user_id);
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Value
|
||||||
public class DeleteUserEvent extends Event{
|
public class DeleteUserEvent extends Event{
|
||||||
|
|
||||||
public DeleteUserEvent(long event_id, long group_id, String user_id) {
|
public DeleteUserEvent(long event_id, long group_id, String user_id) {
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.Value;
|
||||||
import lombok.Getter;
|
import lombok.experimental.NonFinal;
|
||||||
|
|
||||||
@Getter
|
@Value
|
||||||
@AllArgsConstructor
|
@NonFinal
|
||||||
public class Event {
|
public class Event {
|
||||||
long event_id;
|
long event_id;
|
||||||
long group_id;
|
long group_id;
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Value
|
||||||
public class UpdateGroupDescriptionEvent extends Event {
|
public class UpdateGroupDescriptionEvent extends Event {
|
||||||
String newGroupDescription;
|
String newGroupDescription;
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Value;
|
||||||
|
|
||||||
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Value
|
||||||
public class UpdateGroupTitleEvent extends Event {
|
public class UpdateGroupTitleEvent extends Event {
|
||||||
String newGroupTitle;
|
String newGroupTitle;
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,14 @@
|
|||||||
package mops.gruppen2.domain.event;
|
package mops.gruppen2.domain.event;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.EqualsAndHashCode;
|
||||||
|
import lombok.Value;
|
||||||
import mops.gruppen2.domain.Role;
|
import mops.gruppen2.domain.Role;
|
||||||
|
|
||||||
@Getter
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Value
|
||||||
public class UpdateRoleEvent extends Event {
|
public class UpdateRoleEvent extends Event {
|
||||||
|
|
||||||
private final Role newRole;
|
Role newRole;
|
||||||
|
|
||||||
public UpdateRoleEvent(long event_id, long group_id, String user_id, Role newRole) {
|
public UpdateRoleEvent(long event_id, long group_id, String user_id, Role newRole) {
|
||||||
super(event_id, group_id, user_id);
|
super(event_id, group_id, user_id);
|
||||||
|
|||||||
@ -8,7 +8,6 @@ import org.junit.jupiter.api.Test;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
@ -27,22 +26,40 @@ class GroupTest {
|
|||||||
void applyEvent() {
|
void applyEvent() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void applyCreateGroupEvent() {
|
||||||
|
String userId = "asd";
|
||||||
|
CreateGroupEvent event = new CreateGroupEvent(1L,2,userId, "hello", "foo");
|
||||||
|
|
||||||
|
Group group1 = new Group();
|
||||||
|
group1.applyEvent(event);
|
||||||
|
|
||||||
|
Group group2 = new Group();
|
||||||
|
group2.id = 2L;
|
||||||
|
group2.title = "hello";
|
||||||
|
group2.description = "foo";
|
||||||
|
group2.members = new ArrayList<>();
|
||||||
|
group2.roles = new HashMap<>();
|
||||||
|
|
||||||
|
assertEquals(group2, group1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void applyAddUserEvent(){
|
void applyAddUserEvent(){
|
||||||
Group group = new Group();
|
Group group = new Group();
|
||||||
Group testGroup = new Group();
|
// Group testGroup = new Group();
|
||||||
User user = new User("prof", "jens", "bendi", "hi@gmail.com");
|
User user = new User("prof", "jens", "bendi", "hi@gmail.com");
|
||||||
addUserEvent = new AddUserEvent(1L,1L,"prof","jens","bendi", "hi@gmail.com");
|
|
||||||
createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo");
|
createGroupEvent = new CreateGroupEvent(1L,1L,"prof1", "hi", "foo");
|
||||||
|
addUserEvent = new AddUserEvent(1L,1L, user);
|
||||||
|
|
||||||
group.applyEvent(createGroupEvent);
|
group.applyEvent(createGroupEvent);
|
||||||
group.applyEvent(addUserEvent);
|
group.applyEvent(addUserEvent);
|
||||||
testGroup.applyEvent(createGroupEvent);
|
// testGroup.applyEvent(createGroupEvent);
|
||||||
List<User> testTeil = new ArrayList<>();
|
// List<User> testTeil = new ArrayList<>();
|
||||||
testTeil.add(user);
|
// testTeil.add(user);
|
||||||
testGroup.setMembers(testTeil);
|
// testGroup.setMembers(testTeil);
|
||||||
|
|
||||||
assertEquals(testGroup, group);
|
assertThat(group.getMembers().get(0)).isEqualTo(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verwendet CreateGroupEvent und AddUserEvent
|
// Verwendet CreateGroupEvent und AddUserEvent
|
||||||
@ -64,22 +81,4 @@ class GroupTest {
|
|||||||
.containsValue(org);
|
.containsValue(org);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void applyCreteGroupEvent() {
|
|
||||||
String userId = "asd";
|
|
||||||
CreateGroupEvent event = new CreateGroupEvent(1L,2,userId, "hello", "foo");
|
|
||||||
|
|
||||||
Group group1 = new Group();
|
|
||||||
group1.applyEvent(event);
|
|
||||||
|
|
||||||
Group group2 = new Group();
|
|
||||||
group2.id = 2L;
|
|
||||||
group2.title = "hello";
|
|
||||||
group2.description = "foo";
|
|
||||||
group2.members = new ArrayList<>();
|
|
||||||
group2.roles = new HashMap<>();
|
|
||||||
|
|
||||||
assertEquals(group2, group1);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user