From 86f574ac23330ec80e9fd9f0bb1f3cffad91993a Mon Sep 17 00:00:00 2001 From: Christoph Date: Sun, 19 Apr 2020 16:20:20 +0200 Subject: [PATCH] last tests --- .../mops/gruppen2/domain/event/Event.java | 1 + .../gruppen2/domain/event/SetTypeEvent.java | 10 ++++- .../gruppen2/infrastructure/GroupCache.java | 6 +-- .../domain/event/KickMemberEventTest.java | 39 +++++++++++++++++++ .../domain/event/SetDescriptionEventTest.java | 5 --- .../domain/event/SetInviteLinkEventTest.java | 39 +++++++++++++++++++ .../domain/event/SetLimitEventTest.java | 29 ++++++++++++++ .../domain/event/SetParentEventTest.java | 5 --- .../domain/event/SetTitleEventTest.java | 5 --- .../domain/event/SetTypeEventTest.java | 31 +++++++++++++++ .../domain/event/UpdateRoleEventTest.java | 5 --- 11 files changed, 151 insertions(+), 24 deletions(-) delete mode 100644 src/test/java/mops/gruppen2/domain/event/SetDescriptionEventTest.java delete mode 100644 src/test/java/mops/gruppen2/domain/event/SetParentEventTest.java delete mode 100644 src/test/java/mops/gruppen2/domain/event/SetTitleEventTest.java delete mode 100644 src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java diff --git a/src/main/java/mops/gruppen2/domain/event/Event.java b/src/main/java/mops/gruppen2/domain/event/Event.java index 32ec65f..0da2a41 100644 --- a/src/main/java/mops/gruppen2/domain/event/Event.java +++ b/src/main/java/mops/gruppen2/domain/event/Event.java @@ -52,6 +52,7 @@ public abstract class Event { @JsonProperty("date") protected LocalDateTime date; + //TODO: Eigentlich sollte die Gruppe aus dem Cache genommen werden, nicht übergeben public Event(UUID groupid, String exec, String target) { this.groupid = groupid; this.exec = exec; diff --git a/src/main/java/mops/gruppen2/domain/event/SetTypeEvent.java b/src/main/java/mops/gruppen2/domain/event/SetTypeEvent.java index 6b0af22..85be321 100644 --- a/src/main/java/mops/gruppen2/domain/event/SetTypeEvent.java +++ b/src/main/java/mops/gruppen2/domain/event/SetTypeEvent.java @@ -3,6 +3,7 @@ package mops.gruppen2.domain.event; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Value; +import lombok.experimental.NonFinal; import lombok.extern.log4j.Log4j2; import mops.gruppen2.domain.exception.EventException; import mops.gruppen2.domain.model.group.Group; @@ -20,6 +21,12 @@ public class SetTypeEvent extends Event { @JsonProperty("type") Type type; + //TODO: blöder hack, das soll eigentlich anders gehen + // Problem ist, dass die Gruppe vor dem Cache verändert wird, also kann der cache den alten Typ + // nicht mehr aus der Gruppe holen + @NonFinal + Type oldType; + public SetTypeEvent(UUID groupId, String exec, @Valid Type type) { super(groupId, exec, null); @@ -28,12 +35,13 @@ public class SetTypeEvent extends Event { @Override protected void updateCache(GroupCache cache, Group group) { - cache.typesRemove(group); + cache.typesRemove(oldType, group); cache.typesPut(type, group); } @Override protected void applyEvent(Group group) throws EventException { + oldType = group.getType(); group.setType(exec, type); } diff --git a/src/main/java/mops/gruppen2/infrastructure/GroupCache.java b/src/main/java/mops/gruppen2/infrastructure/GroupCache.java index e9fadbf..9dc33de 100644 --- a/src/main/java/mops/gruppen2/infrastructure/GroupCache.java +++ b/src/main/java/mops/gruppen2/infrastructure/GroupCache.java @@ -198,11 +198,11 @@ public class GroupCache { types.get(type).add(group); } - public void typesRemove(Group group) { - if (!types.containsKey(group.getType())) { + public void typesRemove(Type type, Group group) { + if (!types.containsKey(type)) { return; } - types.get(group.getType()).remove(group); + types.get(type).remove(group); } } diff --git a/src/test/java/mops/gruppen2/domain/event/KickMemberEventTest.java b/src/test/java/mops/gruppen2/domain/event/KickMemberEventTest.java index 3736773..51765f7 100644 --- a/src/test/java/mops/gruppen2/domain/event/KickMemberEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/KickMemberEventTest.java @@ -1,5 +1,44 @@ package mops.gruppen2.domain.event; +import mops.gruppen2.GroupBuilder; +import mops.gruppen2.domain.model.group.Group; +import mops.gruppen2.domain.service.EventStoreService; +import mops.gruppen2.infrastructure.GroupCache; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.TestHelper.uuid; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + class KickMemberEventTest { + GroupCache cache; + + @BeforeEach + void setUp() { + cache = new GroupCache(mock(EventStoreService.class)); + } + + @Test + void apply() { + Group group = GroupBuilder.get(cache, 1).group().testadmin().build(); + Event kick = new KickMemberEvent(uuid(1), "TEST", "TEST"); + kick.init(4); + + assertThat(group.size()).isOne(); + kick.apply(group); + assertThat(group.size()).isZero(); + } + + @Test + void apply_cache() { + Group group = GroupBuilder.get(cache, 1).group().testadmin().build(); + Event kick = new KickMemberEvent(uuid(1), "TEST", "TEST"); + kick.init(4); + + assertThat(cache.userGroups("TEST")).hasSize(1); + kick.apply(group, cache); + assertThat(cache.userGroups("TEST")).hasSize(0); + } } diff --git a/src/test/java/mops/gruppen2/domain/event/SetDescriptionEventTest.java b/src/test/java/mops/gruppen2/domain/event/SetDescriptionEventTest.java deleted file mode 100644 index 34e56c6..0000000 --- a/src/test/java/mops/gruppen2/domain/event/SetDescriptionEventTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package mops.gruppen2.domain.event; - -class SetDescriptionEventTest { - -} diff --git a/src/test/java/mops/gruppen2/domain/event/SetInviteLinkEventTest.java b/src/test/java/mops/gruppen2/domain/event/SetInviteLinkEventTest.java index a1a2480..d009529 100644 --- a/src/test/java/mops/gruppen2/domain/event/SetInviteLinkEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/SetInviteLinkEventTest.java @@ -1,5 +1,44 @@ package mops.gruppen2.domain.event; +import mops.gruppen2.GroupBuilder; +import mops.gruppen2.domain.model.group.Group; +import mops.gruppen2.domain.model.group.wrapper.Link; +import mops.gruppen2.domain.service.EventStoreService; +import mops.gruppen2.infrastructure.GroupCache; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.TestHelper.uuid; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + class SetInviteLinkEventTest { + GroupCache cache; + + @BeforeEach + void setUp() { + cache = new GroupCache(mock(EventStoreService.class)); + } + + @Test + void apply() { + Group group = GroupBuilder.get(cache, 1).group().testadmin().build(); + Event link = new SetInviteLinkEvent(uuid(1), "TEST", new Link(uuid(2).toString())); + link.init(4); + + link.apply(group); + assertThat(group.getLink()).isEqualTo(uuid(2).toString()); + } + + @Test + void apply_cache() { + Group group = GroupBuilder.get(cache, 1).group().testadmin().build(); + Event link = new SetInviteLinkEvent(uuid(1), "TEST", new Link(uuid(2).toString())); + link.init(4); + + assertThat(cache.group(group.getLink())).isEqualTo(group); + link.apply(group, cache); + assertThat(cache.group(uuid(2).toString())).isEqualTo(group); + } } diff --git a/src/test/java/mops/gruppen2/domain/event/SetLimitEventTest.java b/src/test/java/mops/gruppen2/domain/event/SetLimitEventTest.java index 73e13d0..c23ace3 100644 --- a/src/test/java/mops/gruppen2/domain/event/SetLimitEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/SetLimitEventTest.java @@ -1,5 +1,34 @@ package mops.gruppen2.domain.event; +import mops.gruppen2.GroupBuilder; +import mops.gruppen2.domain.exception.BadArgumentException; +import mops.gruppen2.domain.model.group.Group; +import mops.gruppen2.domain.model.group.wrapper.Limit; +import mops.gruppen2.domain.service.EventStoreService; +import mops.gruppen2.infrastructure.GroupCache; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.TestHelper.uuid; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.mock; + class SetLimitEventTest { + GroupCache cache; + + @BeforeEach + void setUp() { + cache = new GroupCache(mock(EventStoreService.class)); + } + + @Test + void apply_tooSmall() { + Group group = GroupBuilder.get(cache, 1).group().testadmin().limit(2).add("PETER").build(); + Event limit = new SetLimitEvent(uuid(1), "TEST", new Limit(1)); + limit.init(6); + + assertThatThrownBy(() -> limit.apply(group)) + .isInstanceOf(BadArgumentException.class); + } } diff --git a/src/test/java/mops/gruppen2/domain/event/SetParentEventTest.java b/src/test/java/mops/gruppen2/domain/event/SetParentEventTest.java deleted file mode 100644 index cd84c5a..0000000 --- a/src/test/java/mops/gruppen2/domain/event/SetParentEventTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package mops.gruppen2.domain.event; - -class SetParentEventTest { - -} diff --git a/src/test/java/mops/gruppen2/domain/event/SetTitleEventTest.java b/src/test/java/mops/gruppen2/domain/event/SetTitleEventTest.java deleted file mode 100644 index a4a505b..0000000 --- a/src/test/java/mops/gruppen2/domain/event/SetTitleEventTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package mops.gruppen2.domain.event; - -class SetTitleEventTest { - -} diff --git a/src/test/java/mops/gruppen2/domain/event/SetTypeEventTest.java b/src/test/java/mops/gruppen2/domain/event/SetTypeEventTest.java index 07ab586..892325f 100644 --- a/src/test/java/mops/gruppen2/domain/event/SetTypeEventTest.java +++ b/src/test/java/mops/gruppen2/domain/event/SetTypeEventTest.java @@ -1,5 +1,36 @@ package mops.gruppen2.domain.event; +import mops.gruppen2.GroupBuilder; +import mops.gruppen2.domain.model.group.Group; +import mops.gruppen2.domain.model.group.Type; +import mops.gruppen2.domain.service.EventStoreService; +import mops.gruppen2.infrastructure.GroupCache; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static mops.gruppen2.TestHelper.uuid; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + class SetTypeEventTest { + GroupCache cache; + + @BeforeEach + void setUp() { + cache = new GroupCache(mock(EventStoreService.class)); + } + + @Test + void apply_cache() { + Group group = GroupBuilder.get(cache, 1).group().testadmin().privat().build(); + Event type = new SetTypeEvent(uuid(1), "TEST", Type.LECTURE); + type.init(5); + + assertThat(cache.privates()).hasSize(1); + assertThat(cache.lectures()).isEmpty(); + type.apply(group, cache); + assertThat(cache.lectures()).hasSize(1); + assertThat(cache.privates()).isEmpty(); + } } diff --git a/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java b/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java deleted file mode 100644 index 80e2b7e..0000000 --- a/src/test/java/mops/gruppen2/domain/event/UpdateRoleEventTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package mops.gruppen2.domain.event; - -class UpdateRoleEventTest { - -}