Skip to content

Commit

Permalink
Merge pull request #33 from KNU-HAEDAL/test/group
Browse files Browse the repository at this point in the history
Test/group
  • Loading branch information
bayy1216 authored Jun 30, 2024
2 parents ae8285d + fdf6dfa commit b7d1c54
Show file tree
Hide file tree
Showing 2 changed files with 228 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
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 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<ChallengeGroupModel.Info> 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
void getChallengeGroupsShortsPaging() {
}

@Test
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();
}
}
Original file line number Diff line number Diff line change
@@ -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<ChallengeGroup> 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());
}
}

0 comments on commit b7d1c54

Please sign in to comment.