From d2a699dd711b762b03524e136e129017f89566ff Mon Sep 17 00:00:00 2001 From: Christoph Date: Sat, 18 Apr 2020 18:10:01 +0200 Subject: [PATCH] searchservice test --- .../domain/service/SearchServiceTest.java | 116 ++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 src/test/java/mops/gruppen2/domain/service/SearchServiceTest.java diff --git a/src/test/java/mops/gruppen2/domain/service/SearchServiceTest.java b/src/test/java/mops/gruppen2/domain/service/SearchServiceTest.java new file mode 100644 index 0000000..cd7cd88 --- /dev/null +++ b/src/test/java/mops/gruppen2/domain/service/SearchServiceTest.java @@ -0,0 +1,116 @@ +package mops.gruppen2.domain.service; + +import mops.gruppen2.GroupBuilder; +import mops.gruppen2.domain.model.group.Group; +import mops.gruppen2.domain.model.group.Type; +import mops.gruppen2.infrastructure.GroupCache; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +class SearchServiceTest { + + GroupCache groupCache; + SearchService searchService; + + @BeforeEach + void setUp() { + groupCache = new GroupCache(mock(EventStoreService.class)); + searchService = new SearchService(groupCache); + } + + @Test + void searchString_noResult() { + assertThat(searchService.searchString("", "TEST")).isEmpty(); + } + + @Test + void searchString_noResult_onePrivate_emptyString() { + GroupBuilder.get(groupCache, 1).group(); + + assertThat(searchService.searchString("", "TEST")).isEmpty(); + } + + @Test + void searchString_noResult_onePublic_emptyString_principalMember() { + GroupBuilder.get(groupCache, 1).group().testadmin().publik(); + + assertThat(searchService.searchString("", "TEST")).isEmpty(); + } + + @Test + void searchString_oneResult_onePublic_emptyString_principalNoMember() { + GroupBuilder.get(groupCache, 1).group().testadmin().publik(); + + assertThat(searchService.searchString("", "PETER")).hasSize(1); + } + + @Test + void searchString_oneResult_multiple_emptyString() { + Group groupA = GroupBuilder.get(groupCache, 1).group().testadmin().lecture().build(); + GroupBuilder.get(groupCache, 2).group().testadmin().publik().limit(2).add("PETER"); + GroupBuilder.get(groupCache, 3).group().testadmin().publik().limit(2).add("PETER"); + GroupBuilder.get(groupCache, 4).group().testadmin().privat(); + + assertThat(searchService.searchString("", "PETER")).containsExactly(groupA); + assertThat(searchService.searchString("", "TEST")).isEmpty(); + } + + @Test + void searchString_noPrivates() { + Group groupA = GroupBuilder.get(groupCache, 1).group().testadmin().lecture().build(); + Group groupB = GroupBuilder.get(groupCache, 2).group().testadmin().publik().limit(2).add("PETER").build(); + Group groupC = GroupBuilder.get(groupCache, 3).group().testadmin().publik().limit(2).add("PETER").build(); + GroupBuilder.get(groupCache, 4).group().testadmin().privat(); + GroupBuilder.get(groupCache, 5).group().testadmin().privat(); + GroupBuilder.get(groupCache, 6).group().testadmin().privat(); + + assertThat(searchService.searchString("", "PETER")).containsExactly(groupA); + assertThat(searchService.searchString("", "PRRR")).containsOnly(groupA, groupB, groupC); + assertThat(searchService.searchString("", "TEST")).isEmpty(); + } + + @Test + void searchString_matchString_title() { + Group groupA = GroupBuilder.get(groupCache, 1).group().testadmin().lecture().title("A").build(); + Group groupB = GroupBuilder.get(groupCache, 2).group().testadmin().lecture().title("B").build(); + Group groupC = GroupBuilder.get(groupCache, 3).group().testadmin().lecture().title("C").build(); + Group groupD = GroupBuilder.get(groupCache, 4).group().testadmin().lecture().title("CAESAR").build(); + + assertThat(searchService.searchString("C", "PETER")).containsExactly(groupC, groupD); + assertThat(searchService.searchString("C", "TEST")).isEmpty(); + } + + @Test + void searchString_matchString_desc() { + Group groupA = GroupBuilder.get(groupCache, 1).group().testadmin().lecture().desc("A").build(); + Group groupB = GroupBuilder.get(groupCache, 2).group().testadmin().lecture().desc("B").build(); + Group groupC = GroupBuilder.get(groupCache, 3).group().testadmin().lecture().desc("C").build(); + Group groupD = GroupBuilder.get(groupCache, 4).group().testadmin().lecture().desc("CAESAR").build(); + + assertThat(searchService.searchString("C", "PETER")).containsExactly(groupC, groupD); + assertThat(searchService.searchString("C", "TEST")).isEmpty(); + } + + @Test + void searchType_noGroup() { + assertThat(searchService.searchType(Type.LECTURE, "PETER")).isEmpty(); + assertThat(searchService.searchType(Type.PUBLIC, "PETER")).isEmpty(); + assertThat(searchService.searchType(Type.PRIVATE, "PETER")).isEmpty(); + } + + @Test + void searchType_noPrivates() { + GroupBuilder.get(groupCache, 1).group().testadmin().lecture(); + GroupBuilder.get(groupCache, 2).group().testadmin().publik(); + GroupBuilder.get(groupCache, 3).group().testadmin().privat(); + GroupBuilder.get(groupCache, 4).group().testadmin().privat(); + GroupBuilder.get(groupCache, 5).group().testadmin().lecture(); + + assertThat(searchService.searchType(Type.LECTURE, "PETER")).hasSize(2); + assertThat(searchService.searchType(Type.PUBLIC, "PETER")).hasSize(1); + assertThat(searchService.searchType(Type.PRIVATE, "PETER")).isEmpty(); + } +}