1

made events immutable, removed group-setters -> changed tests to work without setters.

This commit is contained in:
Christoph
2020-03-06 20:55:29 +01:00
parent 0537f27333
commit 17ae13c1e8
9 changed files with 72 additions and 64 deletions

View File

@ -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);

View File

@ -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();
}
} }

View File

@ -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);

View File

@ -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) {

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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);

View File

@ -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);
}
} }