-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
172 additions
and
0 deletions.
There are no files selected for viewing
129 changes: 129 additions & 0 deletions
129
backend/src/test/java/reviewme/template/service/TemplateMapperTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
package reviewme.template.service; | ||
|
||
import static org.assertj.core.api.Assertions.assertThat; | ||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||
import static org.junit.jupiter.api.Assertions.assertAll; | ||
|
||
import java.util.List; | ||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import reviewme.question.domain.OptionGroup; | ||
import reviewme.question.domain.OptionItem; | ||
import reviewme.question.domain.Question2; | ||
import reviewme.question.domain.QuestionType; | ||
import reviewme.question.domain.exception.NoOptionItemsInOptionGroupException; | ||
import reviewme.question.repository.OptionGroupRepository; | ||
import reviewme.question.repository.OptionItemRepository; | ||
import reviewme.question.repository.Question2Repository; | ||
import reviewme.reviewgroup.domain.ReviewGroup; | ||
import reviewme.reviewgroup.repository.ReviewGroupRepository; | ||
import reviewme.support.ServiceTest; | ||
import reviewme.template.domain.Section; | ||
import reviewme.template.domain.Template; | ||
import reviewme.template.domain.VisibleType; | ||
import reviewme.template.domain.exception.SectionNotFoundException; | ||
import reviewme.template.dto.response.TemplateResponse; | ||
import reviewme.template.repository.SectionRepository; | ||
import reviewme.template.repository.TemplateRepository; | ||
|
||
@ServiceTest | ||
class TemplateMapperTest { | ||
|
||
@Autowired | ||
TemplateMapper templateMapper; | ||
|
||
@Autowired | ||
TemplateRepository templateRepository; | ||
|
||
@Autowired | ||
SectionRepository sectionRepository; | ||
|
||
@Autowired | ||
Question2Repository questionRepository; | ||
|
||
@Autowired | ||
OptionGroupRepository optionGroupRepository; | ||
|
||
@Autowired | ||
OptionItemRepository optionItemRepository; | ||
|
||
@Autowired | ||
ReviewGroupRepository reviewGroupRepository; | ||
|
||
@Test | ||
void 리뷰_그룹과_템플릿으로_템플릿_응답을_매핑한다() { | ||
// given | ||
Question2 question1 = new Question2(true, QuestionType.TEXT, "질문", "가이드라인", 1); | ||
Question2 question2 = new Question2(true, QuestionType.CHECKBOX, "질문", "가이드라인", 1); | ||
questionRepository.saveAll(List.of(question1, question2)); | ||
|
||
OptionGroup optionGroup = new OptionGroup(question2.getId(), 1, 2); | ||
optionGroupRepository.save(optionGroup); | ||
|
||
OptionItem optionItem = new OptionItem("선택지", optionGroup.getId(), 1); | ||
optionItemRepository.save(optionItem); | ||
|
||
Section section1 = new Section(VisibleType.ALWAYS, List.of(question1.getId()), null, "말머리1", 1); | ||
Section section2 = new Section(VisibleType.ALWAYS, List.of(question2.getId()), null, "말머리2", 2); | ||
sectionRepository.saveAll(List.of(section1, section2)); | ||
|
||
Template template = new Template(List.of(section1.getId(), section2.getId())); | ||
templateRepository.save(template); | ||
|
||
ReviewGroup reviewGroup = new ReviewGroup("리뷰이명", "프로젝트명", "reviewRequestCode", "groupAccessCode"); | ||
reviewGroupRepository.save(reviewGroup); | ||
|
||
// when | ||
TemplateResponse templateResponse = templateMapper.mapToTemplateResponse(reviewGroup, template); | ||
|
||
// then | ||
assertAll( | ||
() -> assertThat(templateResponse.revieweeName()).isEqualTo(reviewGroup.getReviewee()), | ||
() -> assertThat(templateResponse.projectName()).isEqualTo(reviewGroup.getProjectName()), | ||
() -> assertThat(templateResponse.sections()).hasSize(2), | ||
() -> assertThat(templateResponse.sections().get(0).header()).isEqualTo(section1.getHeader()), | ||
() -> assertThat(templateResponse.sections().get(0).questions()).hasSize(1), | ||
() -> assertThat(templateResponse.sections().get(1).header()).isEqualTo(section2.getHeader()), | ||
() -> assertThat(templateResponse.sections().get(1).questions()).hasSize(1) | ||
); | ||
} | ||
|
||
@Test | ||
void 템플릿_매핑_시_템플릿에_제공할_섹션이_없을_경우_예외가_발생한다() { | ||
// given | ||
Template template = new Template(List.of(1L)); | ||
templateRepository.save(template); | ||
|
||
ReviewGroup reviewGroup = new ReviewGroup("리뷰이명", "프로젝트명", "reviewRequestCode", "groupAccessCode"); | ||
reviewGroupRepository.save(reviewGroup); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> templateMapper.mapToTemplateResponse(reviewGroup, template)) | ||
.isInstanceOf(SectionNotFoundException.class); | ||
} | ||
|
||
@Test | ||
void 템플릿_매핑_시_옵션_그룹에_해당하는_옵션_아이템이_없을_경우_예외가_발생한다() { | ||
// given | ||
Question2 question1 = new Question2(true, QuestionType.TEXT, "질문", "가이드라인", 1); | ||
Question2 question2 = new Question2(true, QuestionType.CHECKBOX, "질문", "가이드라인", 1); | ||
questionRepository.saveAll(List.of(question1, question2)); | ||
|
||
OptionGroup optionGroup = new OptionGroup(question2.getId(), 1, 2); | ||
optionGroupRepository.save(optionGroup); | ||
|
||
Section section1 = new Section(VisibleType.ALWAYS, List.of(question1.getId()), null, "말머리1", 1); | ||
Section section2 = new Section(VisibleType.ALWAYS, List.of(question2.getId()), null, "말머리2", 2); | ||
sectionRepository.saveAll(List.of(section1, section2)); | ||
|
||
Template template = new Template(List.of(section1.getId(), section2.getId())); | ||
templateRepository.save(template); | ||
|
||
ReviewGroup reviewGroup = new ReviewGroup("리뷰이명", "프로젝트명", "reviewRequestCode", "groupAccessCode"); | ||
reviewGroupRepository.save(reviewGroup); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> templateMapper.mapToTemplateResponse(reviewGroup, template)) | ||
.isInstanceOf(NoOptionItemsInOptionGroupException.class); | ||
} | ||
} |
43 changes: 43 additions & 0 deletions
43
backend/src/test/java/reviewme/template/service/TemplateServiceTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package reviewme.template.service; | ||
|
||
import static org.assertj.core.api.Assertions.assertThatThrownBy; | ||
|
||
import org.junit.jupiter.api.Test; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import reviewme.review.domain.exception.ReviewGroupNotFoundByRequestReviewCodeException; | ||
import reviewme.reviewgroup.domain.ReviewGroup; | ||
import reviewme.reviewgroup.repository.ReviewGroupRepository; | ||
import reviewme.support.ServiceTest; | ||
import reviewme.template.domain.exception.NoRegisteredTemplatesException; | ||
|
||
@ServiceTest | ||
class TemplateServiceTest { | ||
|
||
@Autowired | ||
TemplateService templateService; | ||
|
||
@Autowired | ||
ReviewGroupRepository reviewGroupRepository; | ||
|
||
@Test | ||
void 잘못된_리뷰_요청_코드로_리뷰_작성폼을_요청할_경우_예외가_발생한다() { | ||
// given | ||
ReviewGroup reviewGroup = new ReviewGroup("리뷰이명", "프로젝트명", "reviewRequestCode", "groupAccessCode"); | ||
reviewGroupRepository.save(reviewGroup); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> templateService.generateReviewForm(reviewGroup.getReviewRequestCode() + " ")) | ||
.isInstanceOf(ReviewGroupNotFoundByRequestReviewCodeException.class); | ||
} | ||
|
||
@Test | ||
void 리뷰이에게_작성될_리뷰_양식_생성_시_저장된_템플릿이_없을_경우_예외가_발생한다() { | ||
// given | ||
ReviewGroup reviewGroup = new ReviewGroup("리뷰이명", "프로젝트명", "reviewRequestCode", "groupAccessCode"); | ||
reviewGroupRepository.save(reviewGroup); | ||
|
||
// when, then | ||
assertThatThrownBy(() -> templateService.generateReviewForm(reviewGroup.getReviewRequestCode())) | ||
.isInstanceOf(NoRegisteredTemplatesException.class); | ||
} | ||
} |