diff --git a/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java b/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java deleted file mode 100644 index 785b901..0000000 --- a/src/main/java/mops/gruppen2/domain/Exceptions/GroupDoesNotExistException.java +++ /dev/null @@ -1,9 +0,0 @@ -package mops.gruppen2.domain.Exceptions; - -import mops.gruppen2.domain.event.Event; - -public class GroupDoesNotExistException extends EventException { - public GroupDoesNotExistException(String msg) { - super(msg); - } -} diff --git a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java index 2d9d470..a97845c 100644 --- a/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/AddUserEvent.java @@ -3,7 +3,10 @@ package mops.gruppen2.domain.event; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.Role; import mops.gruppen2.domain.User; /** @@ -24,8 +27,14 @@ public class AddUserEvent extends Event { this.email = email; } - public void apply(Group group) { + public void apply(Group group) throws EventException{ User user = new User(this.user_id, this.givenname, this.familyname, this.email); + + if (group.getMembers().contains(user)){ + throw new UserAlreadyExistsException("Der User existiert bereits"); + } + group.getMembers().add(user); + group.getRoles().put(user_id, Role.MEMBER); } } diff --git a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java index 6deb074..c693692 100644 --- a/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/DeleteUserEvent.java @@ -1,6 +1,8 @@ package mops.gruppen2.domain.event; import lombok.*; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; import mops.gruppen2.domain.Group; @@ -14,7 +16,7 @@ public class DeleteUserEvent extends Event { super(group_id, user_id); } - public void apply(Group group) { + public void apply(Group group) throws EventException { for (User user : group.getMembers()) { if (user.getUser_id().equals(this.user_id)) { group.getMembers().remove(user); @@ -22,5 +24,6 @@ public class DeleteUserEvent extends Event { return; } } + throw new UserNotFoundException("Der User existiert nicht"); } } diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 6e9406a..17a00f9 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -6,6 +6,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import mops.gruppen2.domain.Exceptions.EventException; import mops.gruppen2.domain.Group; @@ -31,5 +32,6 @@ public class Event { String user_id; - public void apply(Group group){} + public void apply(Group group) throws EventException { + } } diff --git a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java index f115c97..10d7cee 100644 --- a/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/UpdateRoleEvent.java @@ -24,7 +24,10 @@ public class UpdateRoleEvent extends Event { this.newRole = newRole; } - public void apply(Group group) { + public void apply(Group group) throws UserNotFoundException{ + if (group.getRoles().containsKey(user_id)){ + throw new UserNotFoundException("Der User wurde nicht gefunden"); + } group.getRoles().put(this.user_id, this.newRole); } diff --git a/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java new file mode 100644 index 0000000..649166f --- /dev/null +++ b/src/test/java/mops/gruppen2/domain/event/AddUserEventTest.java @@ -0,0 +1,35 @@ +package mops.gruppen2.domain.event; + +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; +import mops.gruppen2.domain.Group; +import mops.gruppen2.domain.User; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.domain.Role.MEMBER; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class AddUserEventTest { + + @Test + public void userAllreadyExistExeption() throws EventException { + Group group = new Group(); + + User user = new User("user1","Stein", "Speck", "@sdasd"); + + group.getMembers().add(user); + + Event event1 = new AddUserEvent(4L, "user2", "Rock", "Roll", "and"); + event1.apply(group); + + Event event2 = new AddUserEvent(4L, "user1", "Rock", "Roll", "and"); + + assertThrows(UserAlreadyExistsException.class, ()-> + event2.apply(group) + ); + assertThat(group.getMembers().size()).isEqualTo(2); + } + + +} \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java index 59fc2de..6f3c67a 100644 --- a/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/DeleteUserEventTest.java @@ -1,5 +1,8 @@ package mops.gruppen2.domain.event; +import mops.gruppen2.domain.Exceptions.EventException; +import mops.gruppen2.domain.Exceptions.UserAlreadyExistsException; +import mops.gruppen2.domain.Exceptions.UserNotFoundException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.User; import org.junit.jupiter.api.Test; @@ -11,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.*; class DeleteUserEventTest { @Test - void apply() { + void applyDeleteUser() throws EventException { Group group = new Group(); User user = new User("user1","Stein", "Speck", "@sdasd"); @@ -32,4 +35,22 @@ class DeleteUserEventTest { assertThat(group.getRoles().size()).isEqualTo(1); } + + @Test + void userDoesNotExistExeption() { + Group group = new Group(); + + User user = new User("user1","Stein", "Speck", "@sdasd"); + + group.getMembers().add(user); + group.getRoles().put("user1", MEMBER); + + Event event = new DeleteUserEvent(17L,"user5"); + + assertThrows(UserNotFoundException.class, ()-> + event.apply(group) + ); + + assertThat(group.getMembers().size()).isEqualTo(1); + } } \ No newline at end of file diff --git a/src/test/java/mops/gruppen2/service/GroupServiceTest.java b/src/test/java/mops/gruppen2/service/GroupServiceTest.java index 03fd9a1..c67a227 100644 --- a/src/test/java/mops/gruppen2/service/GroupServiceTest.java +++ b/src/test/java/mops/gruppen2/service/GroupServiceTest.java @@ -1,6 +1,5 @@ package mops.gruppen2.service; -import mops.gruppen2.domain.Exceptions.GroupDoesNotExistException; import mops.gruppen2.domain.Group; import mops.gruppen2.domain.GroupType; import mops.gruppen2.domain.Visibility; @@ -29,36 +28,6 @@ class GroupServiceTest { groupService = new GroupService(mock(EventService.class), eventRepository); } - @Disabled - @Test - void applyEventOnGroupThatIsDeleted() throws Exception { - List eventList = new ArrayList<>(); - - eventList.add(new CreateGroupEvent(1L,"Ulli", null, GroupType.LECTURE, Visibility.PRIVATE)); - - eventList.add(new DeleteGroupEvent(10, "loescher78")); - - eventList.add(new AddUserEvent(10L, "Ulli", "Ulli", "Honnis", "FC@B.de")); - - - Assertions.assertThrows(GroupDoesNotExistException.class, () -> { - groupService.projectEventList(eventList); - }); - } - - @Disabled - @Test - void returnDeletedGroup() throws Exception { - List eventList = new ArrayList<>(); - - eventList.add(new CreateGroupEvent(1L, "Prof", null, GroupType.LECTURE, Visibility.PRIVATE)); - - eventList.add(new DeleteGroupEvent(1L, "loescher78")); - - List list = new ArrayList<>(); - - assertThat(groupService.projectEventList(eventList)).isEqualTo(list); - } @Test void rightClassForSucsessfulGroup() throws Exception {