From b4777be9923c7ad1e9c099339c1096285a377e71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=ED=99=8D=EC=84=9D?= <78216059+bayy1216@users.noreply.github.com> Date: Thu, 27 Jun 2024 20:08:21 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Feat]:=20=EC=B1=8C=EB=A6=B0=EC=A7=80=20?= =?UTF-8?q?=EA=B7=B8=EB=A3=B9=20=EC=83=9D=EC=84=B1,=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=EC=BD=94=EB=93=9C=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChallengeGroupQueryServiceTest.java | 28 +++++ .../ChallengeGroupServiceTest.java | 114 ++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java create mode 100644 zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupServiceTest.java diff --git a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java new file mode 100644 index 0000000..5b1b441 --- /dev/null +++ b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java @@ -0,0 +1,28 @@ +package org.haedal.zzansuni.domain.challengegroup; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class ChallengeGroupQueryServiceTest { + + @Test + void getChallengeGroupsPaging() { + } + + @Test + void getChallengeGroupDetail() { + } + + @Test + void getChallengeGroupsShortsPaging() { + } + + @Test + void getChallengeGroupRankingsPaging() { + } + + @Test + void getChallengeGroupRanking() { + } +} \ No newline at end of file diff --git a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupServiceTest.java b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupServiceTest.java new file mode 100644 index 0000000..733e465 --- /dev/null +++ b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupServiceTest.java @@ -0,0 +1,114 @@ +package org.haedal.zzansuni.domain.challengegroup; + +import org.haedal.zzansuni.domain.challengegroup.challenge.Challenge; +import org.haedal.zzansuni.infrastructure.challengegroup.ChallengeGroupRepository; +import org.haedal.zzansuni.infrastructure.challengegroup.challenge.ChallengeRepository; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalDate; +import java.util.List; +import java.util.NoSuchElementException; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +class ChallengeGroupServiceTest { + @Autowired private ChallengeGroupService challengeGroupService; + @Autowired private ChallengeRepository challengeRepository; + @Autowired private ChallengeGroupRepository challengeGroupRepository; + + @DisplayName("챌린지 그룹 생성이 정상적으로 동작한다.") + @Test + @Transactional + void createChallengeGroup() { + LocalDate startDate = LocalDate.of(2021, 1, 1); + // given + ChallengeGroupCommand.CreateChallenge createChallenge = ChallengeGroupCommand.CreateChallenge.builder() + .startDate(startDate) + .endDate(startDate.plusDays(7)) + .dayType(DayType.WEEK) + .requiredCount(1) + .onceExp(100) + .successExp(100) + .difficulty(2) + .build(); + ChallengeGroupCommand.Create command = ChallengeGroupCommand.Create.builder() + .title("title") + .guide("guide") + .content("content") + .category(ChallengeCategory.VOLUNTEER) + .createChallenges(List.of(createChallenge)) + .build(); + + // when + challengeGroupService.createChallengeGroup(command); + + + // then + List groups = challengeGroupRepository.findAll(); + assertThat(groups.size()).isEqualTo(1); + + ChallengeGroup challengeGroup = groups.get(0); + assertThat(challengeGroup.getTitle()).isEqualTo("title"); + assertThat(challengeGroup.getGuide()).isEqualTo("guide"); + assertThat(challengeGroup.getContent()).isEqualTo("content"); + assertThat(challengeGroup.getCategory()).isEqualTo(ChallengeCategory.VOLUNTEER); + + assertThat(challengeGroup.getChallenges().size()).isEqualTo(1); + Challenge challenge = challengeGroup.getChallenges().get(0); + assertThat(challenge.getStartDate()).isEqualTo(startDate); + assertThat(challenge.getEndDate()).isEqualTo(startDate.plusDays(7)); + + + } + + @DisplayName("챌린지 그룹 삭제가 정상적으로 동작한다.") + @Test + @Transactional + void deleteChallengeGroup() { + // given + ChallengeGroup challengeGroup = ChallengeGroup.builder() + .title("title") + .category(ChallengeCategory.VOLUNTEER) + .content("content") + .guide("guide") + .cumulativeCount(0) + .build(); + challengeGroupRepository.save(challengeGroup); + + Challenge challenge1 = Challenge.builder() + .challengeGroup(challengeGroup) + .requiredCount(1) + .dayType(DayType.WEEK) + .onceExp(100) + .successExp(100) + .difficulty(2) + .startDate(LocalDate.now()) + .endDate(LocalDate.now().plusDays(7)) + .build(); + Challenge challenge2 = Challenge.builder() + .challengeGroup(challengeGroup) + .requiredCount(1) + .dayType(DayType.WEEK) + .onceExp(100) + .successExp(100) + .difficulty(2) + .startDate(LocalDate.now()) + .endDate(LocalDate.now().plusDays(7)) + .build(); + challengeRepository.save(challenge1); + challengeRepository.save(challenge2); + + + // when + challengeGroupService.deleteChallengeGroup(challengeGroup.getId()); + + // then + assertThrows(NoSuchElementException.class, () -> challengeGroupRepository.findById(challengeGroup.getId()).get()); + } +} \ No newline at end of file From fdf6dfaece34ea1d5b450a5534f2fe4902126558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=ED=99=8D=EC=84=9D?= <78216059+bayy1216@users.noreply.github.com> Date: Sun, 30 Jun 2024 10:40:10 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Feat]:=20=EC=B1=8C=EB=A6=B0=EC=A7=80=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChallengeGroupQueryServiceTest.java | 88 ++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java index 5b1b441..2dfb6dc 100644 --- a/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java +++ b/zzansuni-api-server/app/src/test/java/org/haedal/zzansuni/domain/challengegroup/ChallengeGroupQueryServiceTest.java @@ -1,17 +1,91 @@ package org.haedal.zzansuni.domain.challengegroup; +import org.haedal.zzansuni.domain.challengegroup.challenge.Challenge; +import org.haedal.zzansuni.domain.challengegroup.image.ChallengeGroupImage; +import org.haedal.zzansuni.infrastructure.challengegroup.ChallengeGroupImageRepository; +import org.haedal.zzansuni.infrastructure.challengegroup.ChallengeGroupRepository; +import org.haedal.zzansuni.infrastructure.challengegroup.challenge.ChallengeRepository; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; -import static org.junit.jupiter.api.Assertions.*; +import java.time.LocalDate; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@SpringBootTest class ChallengeGroupQueryServiceTest { + @Autowired ChallengeGroupQueryService challengeGroupQueryService; + @Autowired ChallengeGroupRepository challengeGroupRepository; + @Autowired ChallengeRepository challengeRepository; + @Autowired ChallengeGroupImageRepository challengeGroupImageRepository; + @DisplayName("챌린지 그룹 목록 페이징이 정상적으로 동작한다.") @Test void getChallengeGroupsPaging() { + // given + for(int i = 0; i < 20; i++) { + ChallengeGroup challengeGroup = createChallengeGroup("title" + i, ChallengeCategory.ECHO); + challengeGroupRepository.save(challengeGroup); + } + for(int i = 0; i < 10; i++) { + ChallengeGroup challengeGroup = createChallengeGroup("title" + i, ChallengeCategory.VOLUNTEER); + challengeGroupRepository.save(challengeGroup); + } + + // when + Pageable pageable = PageRequest.of(0, 10); + ChallengeCategory category = ChallengeCategory.ECHO; + + + // then + Page challengeGroupsPaging = challengeGroupQueryService.getChallengeGroupsPaging(pageable, category); + + assertEquals(10, challengeGroupsPaging.getContent().size()); + assertEquals(2, challengeGroupsPaging.getTotalPages()); + } + @DisplayName("챌린지 그룹 상세 조회가 정상적으로 동작한다.") @Test void getChallengeGroupDetail() { + // given + ChallengeGroup challengeGroup = createChallengeGroup("title", ChallengeCategory.ECHO); + challengeGroupRepository.save(challengeGroup); + + Challenge challenge = Challenge.builder() + .challengeGroup(challengeGroup) + .requiredCount(12) + .dayType(DayType.WEEK) + .successExp(100) + .onceExp(10) + .difficulty(3) + .startDate(LocalDate.now()) + .endDate(LocalDate.now().plusDays(7)) + .build(); + challengeRepository.save(challenge); + + ChallengeGroupImage challengeGroupImage = ChallengeGroupImage.builder() + .challengeGroup(challengeGroup) + .imageUrl("image-url") + .build(); + challengeGroupImageRepository.save(challengeGroupImage); + + + // when + ChallengeGroupModel.Detail model = challengeGroupQueryService.getChallengeGroupDetail(challengeGroup.getId()); + + // then + assertEquals(challengeGroup.getId(), model.getId()); + assertEquals(model.getChallenges().size(), 1); + assertEquals(challenge.getId(), model.getChallenges().get(0).getId()); + assertEquals(model.getImageUrls().size(), 1); + assertEquals(challengeGroupImage.getImageUrl(), model.getImageUrls().get(0)); + } @Test @@ -25,4 +99,16 @@ void getChallengeGroupRankingsPaging() { @Test void getChallengeGroupRanking() { } + + + + private ChallengeGroup createChallengeGroup(String title, ChallengeCategory category) { + return ChallengeGroup.builder() + .title(title) + .category(category) + .content("content") + .guide("guide") + .cumulativeCount(0) + .build(); + } } \ No newline at end of file